题目:
Revenge of Fibonacci
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099
分析:字典树的应用。在求Fibonacci的前40位时,可以只记录下前60位,舍去后面的,这样不会因为进位而产生误差。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<string> 6 #include<algorithm> 7 #include<map> 8 #define maxn 6000005 9 using namespace std; 10 char s[44],s1[101],s2[101],s3[101]; 11 char c[101]; 12 int ans=0; 13 void padd(char *a,char *b,char *back) 14 { 15 int i,j,k,x,y,z,up; 16 i=strlen(a)-1; 17 j=strlen(b)-1; 18 k=0; 19 up=0; 20 while(i>=0||j>=0) 21 { 22 if(i<0)x=0; 23 else x=a[i]-'0'; 24 if(j<0)y=0; 25 else y=b[j]-'0'; 26 z=x+y+up; 27 c[k++]=z%10+'0'; 28 up=z/10; 29 i--; 30 j--; 31 } 32 if(up>0)c[k++]=up+'0'; 33 for(i=0;i<k;i++)back[i]=c[k-1-i]; 34 back[k]='