光棍的yy
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊
。
现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了
,问这样的组合有多少种??
例如(111 可以拆分为 111 12 21 有三种)
-
输入
-
第一行输入一个n表示有n个测试数据
以下n行,每行输入m个1
(1 <= n,m <= 200)
输出
- 输出这种组合种数,占一行 样例输入
-
3 11 111 11111
样例输出
-
2 3 8
来源
斐波那契大数加法问题
#include<iostream> #include<cstring> #include<cstdlib> #define MAX 50 using namespace std; int res[205][MAX];//用于存储各个数值 void Init(){ res[0][MAX-1] = 0, res[1][MAX-1] = 1; res[2][MAX-1] = 1; for (int i = 3; i<205; i++){ int resualt, cont; resualt = cont = 0; for (int j = MAX-1; j>=0; j--){ //注意循环方向 resualt = res[i - 1][j] + res[i - 2][j] + cont; cont = resualt / 10; res[i][j] = resualt % 10; } } } int main(){ Init(); int n; cin >> n; while (n--){ char str[205]; cin >> str; int len = strlen(str); int i; for (i = 0; i < MAX; i++){ if (res[len+1][i]) break; } for (int j = i; j < MAX; j++){ cout << res[len+1][j]; } cout << endl; } }
-
第一行输入一个n表示有n个测试数据