Cod sursa(job #1878370)

Utilizator IlluminatehPinzariu Denis Stefan Illuminateh Data 14 februarie 2017 08:08:33
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>


using namespace std;

/*

P:
    0! = 0
    5! = 1
    10! = 2
    25! = 6

25  = 2 - 1 + 5 = 6
45  = 2 - 1 + 9 = 10
5   = 1 - 1 + 1 = 1
10  = 1 - 1 + 2 = 2
20


putere 5 - 1 + nr / 5 = P

*/


int putere(int nr)
{
    long int p = 0;

    while(nr % 5 != 0)
        nr--;

    while(nr)
    {
        nr /= 5;
        p++;
    }
    return p-1;

}


int main()
{

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

    int N, P;

    in>>P;


    int pas = 1<<27;
    int r = 1<<27;

    while(pas != 0)
    {
        if( (r - pas > 0) && putere(r - pas) - 1  + ( r - pas ) / 5  >= P)
            r-=pas;


        pas/=2;
    }


    if(P == 0)
        out<<1;
    else if(putere(r) - 1  + (r) / 5 == P)
        out<<r;
    else
        out<<-1;

    return 0;
}