题是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;
}
数组高精度