Cod sursa(job #665021)
| Utilizator | Data | 21 ianuarie 2012 13:59:40 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.46 kb |
#include<fstream>
using namespace std;
long long st, dr, mid, n;
long long fct (long long x)
{
long long p, ret=0;
for (p=5; p<=x; p*=5)
ret+=x/p;
return ret;
}
int main()
{
ifstream f ("fact.in");
ofstream h ("fact.out");
f>>n;
st=1;
dr=1 << 30;
while (st<dr-1)
{
mid=(st+dr)/2;
if (fct(mid)<n)
st=mid;
else
dr=mid;
}
if ( fct(st)==n )
h<<st;
else
if ( fct(dr)==n)
h<<dr;
else
h<<'-1';
return 0;
}
