Problem #3076 - ECNU Online Judge
#include<bits/stdc++.h>
using namespace std;
int digit[122][50];
void fun(int n){
if(n==0) cout<<"0"<<endl;
else if(n==1||n==2) cout<<"1"<<endl;
else{
digit[1][0]=digit[2][0]=1;
for(int i=3;i<=n;i++){
for(int j=0;j<50;j++){
digit[i][j]=digit[i-1][j]+digit[i-2][j];
}
for(int j=0;j<50;j++){
if(digit[i][j]>=10){
digit[i][j+1]+=digit[i][j]/10;
digit[i][j]=digit[i][j]%10;
}
}
}
int flag=0;
for(int i=49;i>=0;i--){
if(digit[n][i]!=0) flag=1;
if(flag==1) cout<<digit[n][i];
}
cout<<endl;
}
}
int main(){
int t,n;
cin>>t;
for(int i=0;i<t;i++){
cin>>n;
printf("case #%d:\n",i);
fun(n);
}
}