一道大数题,当做个用数组存大数的模板了

来源:互联网 发布:巴西葡萄牙语翻译软件 编辑:程序博客网 时间:2024/06/07 13:28
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int Max = 7500;int ans[Max][750],len[Max];void init(){    int i,j;    memset(ans,0,sizeof(ans));    memset(len,0,sizeof(len));    ans[1][0] = 1,len[1] = 1;    ans[2][0] = 1,len[2] = 1;    ans[3][0] = 1,len[3] = 1;    ans[4][0] = 1,len[4] = 1;    int t;    for( i = 5; i < Max; i ++ )    {        len[i] = len[i−1];        for( j = 0; j < len[i−1]; j ++ )        {            t = ans[i−1][j] + ans[i−2][j] + ans[i−3][j] + ans[i−4][j];            ans[i][j] += t % 10000;            t /= 10000;            if(t)            {                ans[i][j+1] += t;                len[i] = max(len[i],j+2);            }        }    }}int main(){    int n,i;    init();    while(~scanf("%d",&n))    {        i=len[n]−1;          printf("%d",ans[n][i−−]);          for(;i>=0;i−−)              printf("%04d",ans[n][i]);          printf("\n");      }    return 0;}