Cod sursa(job #1460156)

Utilizator elevenstrArina Raileanu elevenstr Data 11 iulie 2015 17:41:31
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
//http://www.infoarena.ro/problema/fact
using namespace std;
ifstream in("fact.in");
ofstream fout("fact.out");
long long int nrz(long long int m)
{
    long long int d=5,s=0;
    while(m/d>0)
    {s=s+m/d;
    d=d*5;}
    return s;
}
int main()
{
    long long p,c,st,dr,med,t=0;
    st=0;
    dr=1000000000;
    in>>p;
    while(st<=dr)
    {
        med=(st+dr)/2;
        c=nrz(med);
        if(c>p)dr=med-1;
        if(c<p)st=med+1;
        if(c==p&&p!=0){fout<<med-med%5;
        t=1;break;}
        if(p==0){fout<<1;break;}
        //med=med-med%5 ca sa imi afiseze cel mai mic factorial care gaseste nr de zerouri.
    }
if(t!=1&&p!=0)fout<<"-1";

    return 0;
}