作者:00我就是我00乐乐 | 来源:互联网 | 2023-08-07 12:37
光棍的yy时间限制:1000ms|内存限制:65535KB难度:2描述yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。现在给你m个1,你可以把2个1组合成一
光棍的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
输入1的个数n
个数 为1 , 结果为 1;
个数 为2 , 结果为 2;
个数 为3 , 结果为 3;
个数 为4 , 结果为 5;
个数 为5 , 结果为 8;
个数 为6 , 结果为 13;
.....
斐波纳契数列。。。
百度百科:斐波纳契数列
/***************************
# 2013-08-22 18:17:30
# Time: 4MS Memory: 328KB
# Author: zyh
# Status: Accepted
***************************/
#include
#include
int a[250][100];
void init(){
memset(a,0,sizeof(a));
int i,j,tmp;
a[1][0] = 1;
a[2][0] = 2;
for(int i=3;i<202;i++){
for(j=0;j<100;j++){
a[i][j] += a[i-1][j]+a[i-2][j];
if(a[i][j]>9){
a[i][j] -= 10;
a[i][j+1]++;
}
}
}
}
int main()
{
int n,i;
char s[250];
init();
scanf("%d",&n);
while(n--)
{
scanf("%s",s);
int len = strlen(s);
int i=99;
while(a[len][i]==0) i--;
for(;i>=0;i--){
printf("%d",a[len][i]);
}
puts("");
}
return 0;
}
/*
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
*/