Cod sursa(job #1395749)

Utilizator DobosDobos Paul Dobos Data 21 martie 2015 14:21:18
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#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;
}