变型的Fibonacci 数列。
采用4位1存。
#include <iostream>
#include <cstdio>
using namespace std;
int num[7200][500] = {0};
void add()
{
num[0][0] = 0; num[1][0] = 1; num[2][0] = 1;
num[3][0] = 1; num[4][0] = 1;
int ans = 0;
for(int i = 5; i < 7200; i++)
{
for(int j = 0; j < 500; j++)
{
ans += num[i - 1][j] + num[i - 2][j] + num[i - 3][j] + num[i - 4][j];
num[i][j] = ans % 10000; //4位1存
ans /= 10000;
}
}
}
int main()
{
add();
int n;
while(cin >> n)
{
int j;
for(j = 499; j >= 0; j--)
if(num[n][j])
break;
cout << num[n][j];
j--;
while(j >= 0)
printf("%04d", num[n][j--]);
cout << endl;
}
return 0;
}