Cod sursa(job #1877070)
| Utilizator | Data | 12 februarie 2017 21:38:35 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.71 kb |
#include <stdio.h>
using namespace std;
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
int p,inc,sf,nrzero,i;
long long mij;
bool found=false;
scanf("%d",&p);
inc = 1;
sf = p*5;
if(p==0){
printf("1");
return 0;
}
while(inc<=sf && !found)
{
mij = (inc+sf)/2;
nrzero=0;
for(i=5; i<=mij; i*=5)
nrzero += mij/i;
if(nrzero < p)
{
inc = mij+1;
}
else if(nrzero > p)
{
sf=mij-1;
}
else
{
found=true;
printf("%lld ",mij-mij%5);
}
}
if(!found)
printf("-1");
return 0;
}
