Cod sursa(job #1752018)
| Utilizator | Data | 2 septembrie 2016 16:07:38 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.94 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream q("fact.in");
ofstream w("fact.out");
int nr0(int n)
{
int i=5,s=0;
while(i<=n)
{
s+=n/i;
i*=5;
}
return s;
}
int main()
{int p;
long long n,i,lim, cur; ///cur- nr. curent din cautarea binara
q>>p;
if(p==0)
{
w<<"1";
return 0;
}
n=0;
lim=400000015;
i=1;
while(1)
{
cur=(i+lim)/2;
n=nr0(cur);
if(n<p)i=cur+1;
else if(n>p) lim=cur-1;
else if(n==p)
{
while(n==p)
{
cur--;
n=nr0(cur);
}
w<<cur+1;
return 0;
}
if(nr0(i)>p)
{
w<<"-1";
return 0;
}
}
return 0;
}
