Cod sursa(job #2216008)
Utilizator | Data | 24 iunie 2018 15:42:49 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.73 kb |
#include <stdio.h>
int parte(int n)
{
int p=5,s=0;
while(n/p!=0)
{
s+=n/p;
p*=5;
}
return s;
}
int main()
{
int n;
FILE *f=fopen("fact.in","r");
fscanf(f,"%d",&n);
fclose(f);
FILE *g=fopen("fact.out","w");
int st,dr,mij,elem=-1,z;
if(n==0)
{
fprintf(g,"1");
return 0;
}
st=0;
dr=5*n;
while(st<=dr) {
mij=(st+dr)/2;
z=parte(mij);
if(z>n)
dr=mij-1;
else {
if(z<n)
st=mij+1;
else
{
elem=mij;
dr=mij-1;
}
}
}
fprintf(g,"%d",elem);
return 0;
}