Cod sursa(job #268789)
Utilizator | dinu sorin warangel | Data | 1 martie 2009 20:18:46 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
inline long getfive(unsigned long x)
{
unsigned long n=0;
while(x%5==0)
{
n++;
x/=5;
}
return n;
}
int main()
{
long long nr,i=0,x;
FILE *fi,*fo;
fi=fopen("fact.in","r");
fo=fopen("fact.out","w");
fscanf(fi,"%llu",&nr);
if(nr==0)i++;
while(nr>0)
{
i+=125;
x=getfive(i)+28;
nr-=x;
}
while(nr<0)
{
x=getfive(i);
nr+=x;
i-=5;
}
if(nr!=0)fprintf(fo,"-1");
else fprintf(fo,"%llu",i);
return 0;
}