问题描述:
一个整数总可以拆分成2的幂的和,例如:7=1+2+4,7=1+2+2+2,7=1+1+1+4,7=1+1+1+2+2,7=1+1+1+1+1+2,7=1+1+1+1+1+1+1,总共有六种不同的拆分方式。
再比如4可以拆分成:4=4, 4=1+1+1+1, 4=1+1+2, 4=2+2。用f(n)表示n的不同拆分的种数,例如f(7)=6,要求编写程序,读入n(n<1000000),输出f(n)。
输入:7
输出:6
规律:
2,3: 2*1 2种
4,5: 2*2,4种
6,7: 2*3,6种
......
n: n/2*2种
代码展示:
1 #include<stdio.h>
2 int f(int n);
3 int main(){
4 int n;
5 int count;
6 scanf("%d",&n);
7 count = f(n);
8 printf("%d\n",count);
9 return 0;
10 }
11 int f(int n){ //2<=n<=1000000
12 int count;
13 count = (n/2)*2;
14 return count;
15 }
运行截图: