Pagini recente » Cod sursa (job #708508) | Cod sursa (job #1275647) | Cod sursa (job #2849178) | Cod sursa (job #1088070) | Cod sursa (job #12561)
Cod sursa(job #12561)
#include <stdio.h>
#define MAX 400000015
#define INTER 120000010
inline int putere(int x)
{int i=2;
x=x/25;
while (x%5==0)
{
i++;
x/=5;
}
return i;
}
int main()
{FILE *pf;
pf=fopen("fact.in","r");
int p;
fscanf(pf,"%d",&p);
fclose(pf);
if (p==0) {
pf=fopen("fact.out","w");
fprintf(pf,"%d",1);
fclose(pf);
return 0;
}
int n;
if (p<30000000)
{
int numar=0;
for (n=5;numar<p;n+=5)
if (n%25==0) numar+=putere(n);
else numar++;
n-=5;
pf=fopen("fact.out","w");
if (numar==p) fprintf(pf,"%d",n);
else fprintf(pf,"%d",-1);
fclose(pf);
}
else if (p<=60000000)
{
int numar=30000000;
for (n=INTER;numar<p;n+=5)
if (n%25==0) numar+=putere(n);
else numar++;
pf=fopen("fact.out","w");
if (numar==p) fprintf(pf,"%d",n);
else fprintf(pf,"%d",-1);
fclose(pf);
}
else
{int numar=100000000;
for (n=MAX;numar>p;n-=5)
if (n%25==0) numar-=putere(n);
else numar--;
pf=fopen("fact.out","w");
if (numar==p) fprintf(pf,"%d",n);
else fprintf(pf,"%d",-1);
fclose(pf);
}
return 0;
}