Pagini recente » Cod sursa (job #241388) | Cod sursa (job #2077045) | Cod sursa (job #402177) | Cod sursa (job #305518) | Cod sursa (job #1395749)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("petrecere.in");
ofstream g("petrecere.out");
int v[2][3001];
void imultire(int a , int n)
{
int t = 0,i;
for(i = 1; i <= v[a][0] || t; i++, t/= 10)
v[a][i] = (t += v[a][i]*n) %10;
v[a][0] = i-1;
}
void adunare(int a , int b)
{
int t = 0,i;
for(i = 1; i <= v[a][0] || i <= v[b][0] || t; i++, t/= 10)
v[a][i] = (t += v[a][i] + v[b][i]) %10;
v[a][0] = i-1;
}
int main()
{
int i,n,j,a=1,b=0;
f>>n;
v[0][1] = v[0][0]=v[1][0] = 1;
v[1][1] = 2;
n--;
for(i=2; i <= n ; i++)
{
a = i %2; if(a == 1) b = 0; else b = 1;
imultire(a,i);
adunare(a,b);
}
for(i = v[a][0]; i >= 1 ; i--)
g<<v[a][i];
return 0;
}