Cod sursa(job #1051641)
| Utilizator | Data | 10 decembrie 2013 12:51:17 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include<cstdio>
#define filein "fact.in"
#define fileout "fact.out"
using namespace std;
int zero(int n);
int main()
{
freopen (filein,"r",stdin);
freopen (fileout,"w",stdout);
unsigned int p,st,dr,mij,z;
scanf("%d",&p);
st=1;
dr=1000000000;
while (st<=dr)
{
mij=(st+dr)/2;
z=zero(mij);
if (z==p && st==dr) {printf("%d",mij); return 0;}
if (z==p) dr=mij;
else
{
if (z<p) st=mij+1;
else dr=mij-1;
}
}
printf("-1");
return 0;
}
int zero(int n)
{
int i,s=0;
for (i=5; i<=n; i=i*5)
s=s+n/i;
return s;
}
