0040 一个整数总可以拆分成2的幂的和。
作者:互联网
问题描述:
一个整数总可以拆分成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 }
运行截图:
标签:分成,count,0040,整数,int,拆分,printf 来源: https://www.cnblogs.com/cendy/p/code_40.html