Pagini recente » Cod sursa (job #2416434) | Cod sursa (job #1953862) | Cod sursa (job #305997) | Cod sursa (job #559358) | Cod sursa (job #697)
Cod sursa(job #697)
#include <stdio.h>
#include <math.h>
long n,m;
int suma(int j,int k)
{
long s=0;
for (int i=1;i<=k;i++)
s+=floor(j/pow(5,i));
return s;
}
int fact(long p)
{int i;long a,b,j;
if (p==0) return 1;
else
{
m=1;
for(i=1;m<=p;i++)
m+=pow(5,i);
m-=pow(5,--i);
if (p<201) return 5*ceil(p*pow(5,i-1)/m);else{
a=ceil(p*pow(5,i)/m);
b=floor((p+i)*pow(5,i)/m);
for(j=a;j<b;j++)
if (suma(j,i)==p) return j;}
return -1;
}
}
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);
fprintf(f,"%d",i);
return 0;
}