Cod sursa(job #284311)
| Utilizator | Data | 21 martie 2009 17:11:51 | |
|---|---|---|---|
| Problema | Factorial | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.45 kb |
#include<iostream>
#include<stdio.h>
FILE *f=fopen("fact.in","r"),*g=fopen("fact.out","w");
long fact(long nr)
{
long x=0,p5=5,r;
do
{
x=nr/p5;
r+=x;
p5*=5;
}while(x);
return r;
}
int main()
{
long p,st,dr,mij,fa,r=-1;
st=1;dr=2000000000;
fscanf(f,"%ld",&p);
while(st<=dr)
{
mij=(st+dr)/2;
fa=fact(mij);
if(fa==p)
r=mij;
if(fa<p) st=mij+1;
else
dr=mij-1;
}
fprintf(g,"%ld\n",r);
return 0;
}