2343 - 数的计算

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 125 MB

我们要求找出具有下列性质数的个数(包含输入的自然数n):

<span style="line-height:1.5;">先输入一个自然数n(n&lt;=1000),然后对此自然数按照如下方法进行处理:</span> 

1. 不作任何处理;

  1. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;

    3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止。


题目输入

每个测试文件只包含一组测试数据,每组输入一个自然数n(n<=1000)。


题目输出

对于每组输入数据,输出经过处理后的n的结果。


输入/输出样例

输入格式

6

输出格式

6

C语言解答

#include <stdio.h>
int fan(int n)
{int h=1,i;
 i=n/2;
	if(n==1)
  return 1;
else 
  for(;i>=1;i--)
	  h=h+fan(i);
	return h;}
 
int main()
{int n;
scanf("%d",&n);
printf("%d",fan(n));
return 0;
}

C++解答

#include <iostream>
using namespace std;
long long f[100001];
long long comp (long long n){
     long long s=1,i;
     for (i=1;i<=n/2;i++){
         if (!f[i])
            f[i]=comp (i);
         s+=f[i];
     }
     return s;
}
int main ()
{
long long n;
cin>>n;
cout<<comp (n);
return 0;
}

Java解答

import java.util.*;
public class Main{
  public static int cnt = 1;
  public static void main(String[] args) {
  long startTime = System.currentTimeMillis();
    Scanner cin = new Scanner(System.in);
    int n = cin.nextInt();
    recursion(n);

    System.out.println(cnt);
    long endTime = System.currentTimeMillis();
    // System.out.println(endTime-startTime);
  }

  public static void recursion(int n){
    for(int i = 1; i <= n/2; i ++){
      cnt++;
      recursion(i);
    }
  }
}