Cod sursa(job #1496654)

Utilizator Julian.FMI Caluian Iulian Julian. Data 5 octombrie 2015 12:28:26
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long pow5[30],nr[30],suma[30],num[30];
int main()
{int i;

    pow5[1]=5;
    for(i=2;i<=28;i++)pow5[i]=pow5[i-1]*5;


    suma[1]=1;
    nr[1]=1;
    for(i=2;i<=28;i++)
    {nr[i]=pow5[i-1]-suma[i-1];
    suma[i]=suma[i-1]+nr[i];
    }

    //formare vector numar de 0 in factorial de 5 la puterea i
    int j;
    for(i=1;i<=28;i++)
    {num[i]=0;
        for(j=1;j<=i;j++)
            num[i]+=nr[j]*(i-j+1);

    }
    long long n,rez=0,cat,rest;

    f>>n;
    if(n==5){g<<-1;return 0;}
    while(n)
    {
        for(i=1;i<20 && num[i+1]<=n;i++);
        cat=n/num[i];
        rest=n%num[i];
        if(i>1 && (cat>=5 || rest>=5))
        {
            g<<"-1";return 0;
        }
        rez+=cat*pow5[i];
        n=rest;
    }
    g<<rez;

}