Cod sursa(job #296724)
| Utilizator | Data | 5 aprilie 2009 02:14:35 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <stdio.h>
int main()
{long long int x,st,dr,k,i,s,v[100000],nr;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&k);
if (k<=4) x=k*5; else
{
st=0;dr=k*5;nr=1;v[nr]=5;
for( ; ;)
{
if (st>dr) {x=-1; break;}
s=0;x=(st+dr)/2; for (;v[nr]*5<=x;) {nr+=1; v[nr]=v[nr-1]*5;}
for (i=1;i<=nr;i++)
s+=x/v[i];
if (s==k) { break;} else
if (k<s) dr=x-1; else
if (k>s) st=x+1;
}
}
if (x==-1) printf("-1"); else
printf("%lld",(x/5)*5);
return 0;}
