1sting

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.
InputThe 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.
      OutputThe 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自己找规律可得为Fibonacci数列,但递归到已为大位数运算,long long __int64皆不可以,最好的办法为开数组
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=1005;
int a[205][maxn];
int main()
{
  int n,i,j,count,T;
  for(i=0;i<=202;i++)
  {
    for(j=0;j<=1002;j++)
    {
      a[i][j]=0;
    }
  }
  a[1][0]=1;
  a[2][0]=2;
  for(i=3;i<=201;i++)
  {
    for(j=0;j<=1002;j++)
    {
      a[i][j]=a[i][j]+a[i-1][j]+a[i-2][j];
      if(a[i][j]>=10)
      {
        a[i][j]=a[i][j]-10;
        a[i][j+1]=a[i][j+1]+1;
      }
    }
  }
  cin>>T;
  while(T--)
  {
    char b[210];
    cin>>b;
    n=strlen(b);
    for(i=1002;i>=0;i--)
    {
      if(a[n][i]!=0)
      {
        count=i;
        break;
      }
    }
    for(i=count;i>=0;i--)
    {
      cout<<a[n][i];
    }
    cout<<endl;
  }
  return 0;
}
时间: 2024-11-05 19:05:22

1sting的相关文章

HDUJ 1865 1sting

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3227    Accepted Submission(s): 1237 Problem Description You will be given a string which only contains '1'; You can merge two adjacent '1

HDU 1865 1sting (递推、大数)

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7573    Accepted Submission(s): 2945 Problem Description You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’

D - 1sting(相当于斐波那契数列,用大数写)

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 i

hdu 1865 1sting

高精度 斐波那契数 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int L=110; string add(string a,string b)//只限两个非负整数相加 { string ans; int na[L]={0},nb[L]={0}; int la=a.size(),lb=b.size(); for(int i=0;i<la;i+

1sting 大数 递推

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 th

1410121949-hd-1sting

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3442    Accepted Submission(s): 1332 Problem Description You will be given a string which only contains '1'; You can merge two adjacent '1

HDU 1865

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3200    Accepted Submission(s): 1230 Problem Description You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’

杭电1865--1sting

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4133    Accepted Submission(s): 1547 Problem Description You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’

ACM--递推加大数--HDOJ 1865--1string--水

HDOJ题目地址:传送门 1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5135    Accepted Submission(s): 1926 Problem Description You will be given a string which only contains '1'; You can merge tw