#include<iostream>
#include<string>
using namespace std;
string add(string s1, string s2)
{
string max, min;
int lmax, lmin;
max = s1; min = s2;
if (s1.size() < s2.size())
{
max = s2;
min = s1;
}
lmax = max.size() - 1;
lmin = min.size() - 1;
for (int i = lmin; i >= 0; i--)
{
max[lmax] += (min[i] - '0');
lmax--;
}
lmax = max.size() - 1;
for (int i = lmax; i >= 1; i--)
{
if (max[i] > '9')
{
max[i] -= 10;
max[i - 1]++;
}
}
if (max[0] > '9')
{
max[0] -= 10;
max = '1' + max;
}
return max;
}
string f[10001];// 数组要尽量开大一点!
int main()
{
int m;
f[1] = f[2] = f[3] = f[4] = "1";
for (int n = 5; n <= 10000; n++)
{
f[n] = add(f[n - 1], add(f[n - 2], add(f[n - 3], f[n - 4])));
}
while (cin >> m)
{
cout << f[m] << endl;
}
return 0;
}
#include<string>
using namespace std;
string add(string s1, string s2)
{
string max, min;
int lmax, lmin;
max = s1; min = s2;
if (s1.size() < s2.size())
{
max = s2;
min = s1;
}
lmax = max.size() - 1;
lmin = min.size() - 1;
for (int i = lmin; i >= 0; i--)
{
max[lmax] += (min[i] - '0');
lmax--;
}
lmax = max.size() - 1;
for (int i = lmax; i >= 1; i--)
{
if (max[i] > '9')
{
max[i] -= 10;
max[i - 1]++;
}
}
if (max[0] > '9')
{
max[0] -= 10;
max = '1' + max;
}
return max;
}
string f[10001];// 数组要尽量开大一点!
int main()
{
int m;
f[1] = f[2] = f[3] = f[4] = "1";
for (int n = 5; n <= 10000; n++)
{
f[n] = add(f[n - 1], add(f[n - 2], add(f[n - 3], f[n - 4])));
}
while (cin >> m)
{
cout << f[m] << endl;
}
return 0;
}