Uva 10334

来源:互联网 发布:开源人工智能项目 编辑:程序博客网 时间:2024/06/01 10:31

数学题  大数加法

 

#include <iostream>#include <cstdio>#include <cstring>using namespace std;char f[1020][1030],ff[1020][1030],kk[1100];const int N = 1020;void Add(char *a, char *b){    int w = 0;    for(int i = 0; i < N; i++)    {        w += a[i]-'0'+b[i]-'0';        int c = w%10;        w /= 10;        b[i] = c+'0';    }}void init(){    memset(f, '0', sizeof(f));    memset(ff, '0', sizeof(ff));    f[0][0] = '0';    ff[0][0] = '0';    f[1][0] = '1';    ff[1][0] = '1';    Add(f[1],f[2]);    Add(ff[1],f[2]);    Add(f[1], ff[2]);    for(int i = 3; i < 1010; i++)    {        Add(f[i-1], f[i]);        Add(ff[i-1], f[i]);        Add(f[i-1], ff[i]);    }}int main(){    init();    int n;    while(scanf("%d",&n) == 1)    {        if(n == 0)        {            puts("1");            continue;        }        memset(kk, '0', sizeof(kk));        Add(f[n], kk);        Add(ff[n], kk);        int i;        for(i = N; i > 0; i--)        {            if(kk[i] != '0')                break;        }        for(int j = i; j >= 0; j--)        {            printf("%c",kk[j]);        }        puts("");    }    return 0;}