Cod sursa(job #1803916)
Utilizator | Data | 12 noiembrie 2016 00:12:11 | |
---|---|---|---|
Problema | Factorial | Scor | 15 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.76 kb |
#include <stdio.h>
#include <stdlib.h>
inline long long int put5(long long int n)
{
long long int s=0;
while(n>0)
{
n=n/5;
s+=n;
}
return s;
}
int main()
{
long long int n,i,p,k;
FILE*fi,*fo;
fi=fopen("fact.in","r");
fo=fopen("fact.out","w");
fscanf(fi,"%lld",&n);
if(n==0)
fprintf(fo,"1");
else
{
i<<28;
p=0;
while(i>0)
{
if(put5(p+i)<=n)
{
p+=i;
}
i/=2;
}
while(put5(p)>=n)
p--;
if(put5(p+1)==n)
fprintf(fo,"%lld",p+1);
else fprintf(fo,"-1");
}
fclose(fi);
fclose(fo);
return 0;
}