1sting
1sting
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5093 Accepted Submission(s): 1903
Problem Description
You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total
number of result you can get.
Input
The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.
Output
The output contain n lines, each line output the number of result you can get .
Sample Input
3
1
11
11111
Sample Output
1
2
8
Author
z.jt
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
char a[1001][1001];
int main()
{
memset(a,'0',sizeof(a));
a[1][0]='1';
a[2][0]='2';
int d=1;
for(int i=3;i<1001;i++)
{
d++;
int jin=0,s;
for(int j=0;j<=d;j++)
{
s=a[i-1][j]-'0'+a[i-2][j]-'0'+jin;
jin=s/10;
a[i][j]=s%10+'0';
}
}
int t;
char s[1001];
scanf("%d",&t);
while(t--)
{
scanf("%s",&s);
int n=strlen(s);
int k=1000;
while(k--)
{
if(a[n][k]!='0')
break;
}
for(int i=k;i>=0;i--)
{
printf("%c",a[n][i]);
} printf("\n");
}
return 0;
}
编程五分钟,调试两小时...