Mai intai trebuie sa te autentifici.
Cod sursa(job #1533818)
Utilizator | Data | 23 noiembrie 2015 00:16:23 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.71 kb |
#include <stdio.h>
int trzeros(int n)
{
int zeros=0;
for(int p=5; p<=n; p*=5)
zeros+=n/p;
return zeros;
}
int findn(int l, int r, int p)
{
if(p==0)
return 1;
int mid, paux;
while(l<=r&&paux!=p)
{
mid=(l+r)/2;
paux=trzeros(mid);
if (paux>p)
r=mid-1;
else
l=mid+1;
}
return mid-mid%5;
}
int main()
{
FILE *in=fopen("fact.in","r");
int p;
fscanf(in,"%d",&p);
fclose(in);
int n=findn(0,810000000,p);
FILE *out=fopen("fact.out","w");
if (trzeros(n)!=p)
fprintf(out,"-1");
else
fprintf(out,"%d",n);
fclose(out);
return 0;
}