其他分享
首页 > 其他分享> > 0040 一个整数总可以拆分成2的幂的和。

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