题是dp+高精度,这里记录一下高精度新思路
用二维数组 n [ ][ ] 来高精度储存一个整数 n [ i ],其中 n [ i ][ j ] 表示 n [ i ] 的第 j 位(当然,是倒序的)
每次运算时,先逐位计算好,然后考虑进位问题。
#include<iostream> using namespace std; int map[1005][1005]; int n,m; int len=1; void padd(int x) { for(int i=1;i<=len;i++) map[x][i]=map[x-1][i]+map[x-2][i]; for(int i=1;i<=len;i++) { if(map[x][i]>=10) { map[x][i+1]=map[x][i+1]+map[x][i]/10; map[x][i]%=10; } if(map[x][len+1]) len++; } } int main() { cin>>n>>m; map[n+1][1]=1; map[n+2][1]=2; for(int i=n+3;i<=m;i++) padd(i); for(int i=len;i>=1;i--) cout<<map[m][i]; return 0; }