Pagini recente » Cod sursa (job #1759846) | Cod sursa (job #1638232) | Cod sursa (job #402221) | Cod sursa (job #109717) | Cod sursa (job #724)
Cod sursa(job #724)
#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);
if(p==m-1) return -1; else m-=pow(5,--i);
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");
fprintf(f,"%d",fact(p));
return 0;
}