Cod sursa(job #1733936)
| Utilizator | Data | 26 iulie 2016 09:49:13 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.39 kb |
#include<stdio.h>
long long p,k,i,n;main(){freopen("fact.in","r",stdin);freopen("fact.out","w",stdout);scanf("%lld",&p);if(p==1){printf("1");return;}
long long fact=1,sum=0,t1,t2;
for(;sum<p;)sum+=fact,fact*=5;
for(t1=fact/5,t2=fact,k=sum;t1<t2-1;){
for(i=5,k=0;i<=(t1+t2)/2;i*=5)k+=(t1+t2)/2/i;
if(k<p)t1=(t1+t2)/2;
else t2=(t1+t2)/2;
}
for(i=5,k=0;i<=t2;i*=5)k+=t2/i;
printf("%lld",k==p?t2:-1);}
