Cod sursa(job #875843)
| Utilizator | Data | 10 februarie 2013 20:57:02 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <stdio.h>
long long get5(long long nr){
long long ans=0;
for(long long k=5;k<=nr;k*=5){
ans+=nr/k;
}
return ans;
}
int main(){
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
int p;
scanf("%d",&p);
if(p==0){printf("1");return 0;}
long long st=1,dr=20000000000;
while(st<dr){
long long m = (st+dr)/2;
long long g5=get5(m);
//if(g5==p){printf("%d",m);return 0;}
if(p<=g5){
dr=m;
}
else{
st=m+1;
}
}
if(get5(st)!=p)
while(true);
printf("%d",st);
return 0;
}