您的位置:首页 > 编程语言 > Java开发

1335: 算法实现题 2-5 半数集问题

2017-07-12 11:01 183 查看

题目

Description

给定一个自然数 n,由 n 开始可以依次产生半数集 set(n)中的数如下。

(1) n∈set(n);

(2) 在 n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;

(3) 按此规则进行处理,直到不能再添加自然数为止。

例如,set(6)={6,16,26,126,36,136}。半数集 set(6)中有 6 个元素。

注意半数集是多重集。

«算法设计:

对于给定的自然数 n,计算半数集 set(n)中的元素个数。

Input

每个输入只有 1 行,给出整数 n。

Output

输出1行是半数集 set(n)中的元素个数。

Sample Input

6

Sample Output

6

代码块

//测试数据为多组,好坑啊啊啊啊

import java.util.Arrays;
import java.util.Scanner;

public class Main {
static int[] arrays = new int[100000];

public static void main(String[] args) {
Scanner cn = new Scanner(System.in);
while (cn.hasNext()) {
Arrays.fill(arrays, 0);
int n = cn.nextInt();
System.out.println(halfSet(n));
}
cn.close();
}

private static int halfSet(int n) {
if (arrays
> 0)
return arrays
;
else {
arrays
= 1;
for (int i = 1; i <= n / 2; i++)
arrays
+= halfSet(i);
return arrays
;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息