Cod sursa(job #927128)

Utilizator CStefanPChitanu Stefan Petru CStefanP Data 25 martie 2013 16:40:06
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#define NMAX 100000000

using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

int pow[200], nr[200], n;

int search (int x)
{
    for(int i = 0; i < n; i++)
        if(nr[i] <= x && nr[i + 1] > x)
            return i;
    return -1;
}

int calc (int x)
{
    int r, i;
    r = 0;
    while(x)
    {
        i = search(x);
        r = r + x / nr[i] * pow[i];
        x = x % nr[i];
    }
    return r;
}

int main()
{
    int p, res;
    f>>p;
    pow[0] = 1;
    nr[0]  = 0;
    for(n = 1; nr[n - 1] <= NMAX; n++)
    {
        nr[n]  = pow[n - 1] + nr[n - 1];
        pow[n] = pow[n - 1] * 5;
    }
    nr[0]=1;
    if(p == 0)
    {
        g << '1' << '\n';
    }
    else
    {
        res = calc(p);
        if(res == calc(p + 1))
            g << -1 << '\n';
        else
            g << res << '\n';
    }
    return 0;
}