http://acm.hdu.edu.cn/showproblem.php?pid=1865
分析:递推结果为: 1-1, 2-2, 3-3, 4-5, 5-8, 6-13.......,可以看出这是有规律的(f[i]=f[i-1]+f[i-2](i>=3)),只不过题中要求前200项,所以会超int 以及 Longlong, 只能用字符串解决问题了。。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <stdio.h> #include <string.h> #define maxn 300 int str1[maxn][maxn]; int main() { int T, i, j; scanf("%d ",&T); while(T--) { char str[300]; gets(str); int len=strlen(str); str1[0][0]=1; str1[1][0]=2; for(i=2;i<len;i++) { int c=0,k; for(k=0;k<maxn;k++) { int s=str1[i-1][k]+str1[i-2][k]+c; str1[i][k]=s%10; c=s/10; } while(c) { str1[i][k++]=c%10; c/=10; } } for(i=299;i>=0;i--) if(str1[len-1][i]) break; for(j=i;j>=0;j--) printf("%d",str1[len-1][j]); printf("\n"); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步