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;
}

posted @ 2019-12-12 09:01  千金一发  阅读(93)  评论(0编辑  收藏  举报