我们要求找出具有下列性质数的个数(包含输入的正整数 n)。
对于一个正整数 n ,对此正整数按照如下方法进行处理:
不作任何处理;
在它的左边加上一个正整数,但该正整数不能超过原数的一半;
加上数后,继续按此规则进行处理,直到不能再加正整数为止。
例如:
n=2时,可以产生 2 、12 两个数。
n=3时,可以产生 3 、13 两个数。
请你求出以上处理后产生的数的个数。
当n=101时,可以产生多少个数?
答案:9828
public class Main {
static ArrayList<String> arr = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
dfs(String.valueOf(n),n);
System.out.println(arr.size());
}
//num表示加在前面的数
public static void dfs(String s,int num)
{
arr.add(s);
//不能超过原数1/2
for (int i = 1; i <=num/2; i++) {
dfs(i+s,i);
}
}
}