Cod sursa(job #1953208)

Utilizator robertpop99Popescu Robert Gabriel robertpop99 Data 4 aprilie 2017 18:23:40
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
long long p;
long long x,y,m,c;

long long cifre(long long n)
{
    long long nrc=0,i=5;
    while(i<=n)
    {
        nrc+=n/i;
        i*=5;
    }
    return nrc;
}
int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    fin>>p;
    if(p==0) {fout<<1<<'\n';return 0;}
    y=1;
    while(cifre(y)<p)
    {
        x=y;
        y*=2;
    }
    c=cifre(y);
    if(c==p) {fout<<y;return 0;}
    else
        while(x<=y)
        {
            m=(x+y)/2;
            c=cifre(m);
            if(c<p) x=m+1;
            else if(c>p) y=m-1;
            else if(c==p)
            {
                while(cifre(m-1)==p) m--;
                fout<<m<<'\n';
                return 0;
            }

        }
     fout<<-1<<'\n';
    return 0;
}