Cod sursa(job #643)
Utilizator | Data | 11 decembrie 2006 17:29:40 | |
---|---|---|---|
Problema | Factorial | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <stdio.h>
#include <math.h>
long n,m;
int fact(long p)
{int i;
if (p==0) return 1;
else
{
m=1;
for(i=1;m<=p;i++)
m+=pow(5,i);
m-=pow(5,--i);
n=5*ceil(p*pow(5,i-1)/m);
}
return n;
}
int main(char *argv[],int argc)
{
long p;
int i;
FILE *f;
f=fopen("fact.in","rt");
fscanf(f,"%d",&p);
fclose(f);
f=fopen("fact.out","wt");
i=fact(p);
if (i==fact(p+1)) fprintf(f,"%d",-1);
else fprintf(f,"%d",i);
return 0;
}