数学题 大数加法
#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;
}