1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int dsf(int cur,int k,int x)//一个小小的循环,判断两种情况走向不同的分支 5 { 6 if(cur<=k) 7 return 1; 8 else 9 { 10 if(cur%2==0) 11 x=x+2*dsf(cur/2,k,x); 12 else 13 x=x+dsf(cur/2,k,x)+dsf(cur/2+1,k,x); 14 } 15 return x; 16 } 17 int main() 18 { 19 int t;int n,k,m,x; 20 scanf("%d",&t); 21 while(t--) 22 { 23 x=0; 24 scanf("%d %d",&n,&k); 25 m=dsf(n,k,x); 26 printf("%d\n",m); 27 } 28 return 0; 29 }
2015-11-23
8635 气球该题有题解 时间限制:500MS 内存限制:1000K 题型: 编程题 语言: G++;GCC
Description一天,OYY 从外面打完比赛回来,手上拿了很多个气球,颜色各不相同。他见到我,就说,你看,我拿了很多气球! 我膜拜死了!!然后他就问了我一个问题,如果把这里的气球分成若干份。有多少种分法呢? 由于我数学非常菜,顿时头晕了,因此希望大家能帮我解答这个问题(@_@)) 输入格式输入数据有2行 第1 行有两个数n,m,分别代表oyy 手上的气球个数和分的份数(n<=10,m<=5) 第2 行有m 个数,分别代表每一份的个数,保证总个数等于n 输出格式输出数据有1行,输出一个数代表不同分法的总数。
输入样例3 1 3
输出样例1
提示Sample Input2: 4 2 2 2 Sample Output2: 3
来源Ick2 |
原文:http://www.cnblogs.com/kevensusu/p/4992615.html