Cod sursa(job #1036760)

Utilizator borcanirobertBorcani Robert borcanirobert Data 19 noiembrie 2013 16:54:16
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
using namespace std;

ifstream fin("fact.in");
ofstream fout("fact.out");

int main()
{
    long long p, p5[27], nr0[27], nr = 0, i;
    fin >> p;
    if ( p == 0 )
    {
        fout << "1\n";
        fin.close();
        fout.close();
        return 0;
    }
    else
        if ( p == 5 )
        {
            fout << "-1\n";
            fin.close();
            fout.close();
            return 0;
        }
    p5[0] = 5;
    for ( i = 1; i <= 26; i++ )
        p5[i] = p5[i - 1] * 5;
    nr0[0] = 1;
    for ( i = 1; i <= 26; i++ )
        nr0[i] = p5[i - 1] + nr0[i - 1];
    i = 26;
    while ( p != 0 )
    {
        if ( p >= nr0[i] )
        {
            nr += p5[i] * ( p / nr0[i] );
            p %= nr0[i];
            if ( i == 0 ) p = 0;
        }
        i--;
    }
    fout << nr << '\n';
    fin.close();
    fout.close();
    return 0;
}