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<stdio.h> #include<string.h> using namespace std; int a[1010][1010]={0}; int main() { a[1][1]=1; a[2][1]=2; int s=0,p=0; for(int i=3;i<=210;i++) for(int j=1;j<=500;j++) { s=a[i-1][j]+a[i-2][j]+p; a[i][j]=s; p=s/10; } int t; scanf("%d",&t); while(t--) { int p; char cr[1000]; scanf("%s",cr); p=strlen(cr); int i; for(i=1009;i>=1;i--) if(a[p][i]!=0) break; for(i;i>=1;i--) printf("%d",a[p][i]); printf("\n"); } return 0; }