hdu-1865

来源:互联网 发布:androidstudio源码网 编辑:程序博客网 时间:2024/05/18 01:02

由于数字只有'1'和'2'这两种,那么当让第n位为1的时候,ans[n]加上ans[n-1];当让最后两位合并成2的时候,ans[n]加上ans[n-2](因为要保证倒数第二位一定是1)。   
算出来的ans就是一个斐波那契数列。


 

#include<stdio.h>#include<string.h>#define base 100000000int f[202][102];int main(){//freopen("d:\\test.txt","r",stdin);int i,j,t;char a[201];f[0][0]=1;f[1][0]=1;for(i=2;i<202;++i)for(j=0;j+1<102;++j){f[i][j]+=f[i-1][j]+f[i-2][j];if(f[i][j]>=base){f[i][j+1]+=f[i][j]/base;f[i][j]%=base;}}scanf("%d",&t);getchar();while(t--){gets(a);int len=strlen(a);for(i=102-1;i>=0;--i)if(f[len][i]!=0)break;printf("%d",f[len][i]);for(--i;i>=0;--i)printf("%08d",f[len][i]);printf("\n");}return 0;}

  

原创粉丝点击