Cod sursa(job #1733938)

Utilizator mIllIbytemIllI byte mIllIbyte Data 26 iulie 2016 09:51:09
Problema Factorial Scor 100
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){printf("1");return 0;}

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);}