哈,用java还有C++各交了一次
C++版
#include<iostream>
#include<algorithm>
using namespace std;
int sum[201][50],len1[201];
void init()
{
sum[0][0]=0;len1[0]=0;
sum[1][0]=1;len1[1]=0;
sum[2][0]=2;len1[2]=0;
for(int i=3;i<=200;i++)
{
int k=0,j;
//cout<<i<<endl;
for(j=0;j<=len1[i-2];j++)
{
int t=k+sum[i-1][j]+sum[i-2][j];
// cout<<t<<endl;
k=t/10000;
sum[i][j]=t%10000;
}
//cout<<k<<' '<<j<<endl;
while((j-1)!=len1[i-1])
{
int t=k+sum[i-1][j];
k=t/10000;
sum[i][j]=t%10000;
j++;
}
while(k)
{
int t=k;
k=t/10000;
sum[i][j]=t%10000;
j++;
}
len1[i]=j-1;
//cout<<j<<endl;
}
}
int main()
{
int n,len;
init();
char str[201];
scanf("%d",&n);
while(n--)
{
scanf("%s",str);
len=strlen(str);
printf("%d",sum[len][len1[len]]);
for(int i=len1[len]-1;i>=0;i--)
printf("%04d",sum[len][i]);
printf("\n");
}
return 0;
}
java版
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int t;
String a1,b1;
BigInteger [] sum = new BigInteger[201];
sum[0] = BigInteger.valueOf(1);
sum[1] = BigInteger.valueOf(2);
for(int i=3;i<=200;i++)
sum[i-1]=sum[i-3].add(sum[i-2]);
Scanner in = new Scanner(System.in);
t = in.nextInt();
for(int i = 1 ; i <= t ; i++){
a1 = in.next();
System.out.println(sum[a1.length()-1]);
}
}
}