Cod sursa(job #1904787)
| Utilizator | Data | 5 martie 2017 19:40:09 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <stdio.h>
const int nmax=500000000;
int nzero(int x)
{
int ans=0;
while (x > 0)
{
x/=5;
ans+=x;
}
return ans;
}
int bin_search(int n, int p)
{
int s,d,m,x,ans;
s=1;
d=n;
ans=-1;
while (s <= d)
{
m=s+(d-s)/2;
x=nzero(m);
if (p > x)
s=m+1;
else
{
if (x == p)
ans=m;
d=m-1;
}
}
return ans;
}
int main()
{
int p;
FILE *f;
f=fopen("fact.in","r");
fscanf(f,"%d",&p);
fclose(f);
f=fopen("fact.out","w");
if (p == 0)
fprintf(f,"1");
else
fprintf(f,"%d",bin_search(nmax,p));
fclose(f);
}
