基础的大数加法题,套用模板即可。
#include <iostream>
#include <cstdio>
using namespace std;
const int scale = 1e9; //大数数组中的进位
const int MAXN = 10005; //最大输入
const int MAXL = 230; //最大数组长度
int fib[MAXN][MAXL]; //Fibonacci数组
//fib数组的第i个数和第j个数相加(大数模板)
void fibAdd(int i, int j)
{
for (int k = 0; k < MAXL; k++)
{
fib[i][k] += fib[j][k]; //对应位相加
if (fib[i][k] >= scale) //进位
{
fib[i][k] -= scale;
++fib[i][k + 1];
}
}
}
int main()
{
for (int i = 1; i < 5; i++)
fib[i][0] = 1;
for (int i = 5; i < MAXN; i++) //打表
{
for (int j = i - 4; j < i; j++)
fibAdd(i, j);
}
int n;
while (cin >> n)
{
int index = MAXL - 1; //第一个不为0的数
while (fib[n][index] == 0)
--index;
cout << fib[n][index--];
while (index >= 0)
printf("%09d", fib[n][index--]);
cout << endl;
}
return 0;
}
继续加油。