Pagini recente » Cod sursa (job #3337130) | Cod sursa (job #3311334) | Cod sursa (job #2079358) | Cod sursa (job #775953) | Cod sursa (job #3328755)
#include <fstream>
using namespace std;
#define int long long
ifstream in("nunta.in");
ofstream out("nunta.out");
int n;
int ans[1005];
int factori[1005];
int rez[1005];
int fib[1005];
void inmultire(int v[], int x)
{
int t = 0;
for(int i = 1; i<=v[0]; i++)
{
t += v[i] * x;
v[i] = t % 10;
t /= 10;
}
while(t != 0)
{
v[0]++;
v[v[0]] = t % 10;
t /= 10;
}
}
void adunare(int a[], int b[])
{
a[0] = max(a[0], b[0]);
int t = 0;
for(int i = 1; i<=a[0]; i++)
{
t += a[i];
if(i <= b[0])
{
t += b[i];
}
a[i] = t % 10;
t /= 10;
}
while(t != 0)
{
a[0]++;
a[a[0]] = t % 10;
t /= 10;
}
}
void comb(int n, int k)
{
for(int i = 1; i<=n; i++)
{
factori[i] = 0;
}
for(int i = 2; i<=n; i++)
{
int x = i;
for(int d = 2; d*d<=x; d++)
{
while(x % d == 0)
{
factori[d]++;
x /= d;
}
}
if(x > 1)
{
factori[x]++;
}
}
for(int i = 2; i<=k; i++)
{
int x = i;
for(int d = 2; d*d<=x; d++)
{
while(x % d == 0)
{
factori[d]--;
x /= d;
}
}
if(x > 1)
{
factori[x]--;
}
}
for(int i = 2; i<=n - k; i++)
{
int x = i;
for(int d = 2; d*d<=x; d++)
{
while(x % d == 0)
{
factori[d]--;
x /= d;
}
}
if(x > 1)
{
factori[x]--;
}
}
ans[0] = ans[1] = 1;
for(int i = 2; i<=n; i++)
{
for(int j = 1; j<=factori[i]; j++)
{
inmultire(ans, i);
// out<<i<<" ";
}
}
// out<<'\n';
// for(int i = ans[0]; i>=1; i--)
// {
// out<<ans[i];
// }
// out<<'\n';
adunare(rez, ans);
}
void starsandbars(int cutii, int obiecte)
{
comb(cutii + obiecte - 1, cutii - 1);
}
signed main()
{
in>>n;
fib[1] = 1;
fib[2] = 2;
for(int i = 3; i<=n; i++)
{
fib[i] = fib[i - 1] + fib[i - 2];
}
out<<fib[n];
return 0;
}