题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1715
其实题目还没有上次那某种序列难,直接按那题代码稍稍修改下,直接水过。
还是大数相加题,直接模版。
代码:
#include<stdio.h> #include<string.h> #define maxn 300 int main() { int s,n,i,j,k,up,str[300],str1[300],str2[300];//**定义大了各种TLE,这里修改了好几次**// scanf("%d",&s); while(s--) { memset(str,0,sizeof(str)); memset(str1,0,sizeof(str1)); memset(str2,0,sizeof(str2)); scanf("%d",&n); if(n==1||n==2) { printf("1\n"); continue; } str1[0]=1;str2[0]=1; for(i=0;i<n-2;i++) { for(j=0;j<maxn;j++) { str[j]=str1[j]+str2[j]; } for(up=0,j=0;j<maxn;j++) { str[j]=str1[j]+str2[j]+up; up=str[j]/10; str[j]=str[j]%10; } for(j=0;j<maxn;j++) { str1[j]=str2[j]; str2[j]=str[j]; } } for(i=maxn-1;i>=0;i--) { if(str[i]) break; } for(k=i;k>=0;k--) { printf("%d",str[k]); } printf("\n"); } return 0; }