Mai intai trebuie sa te autentifici.
Cod sursa(job #1814473)
| Utilizator | Data | 24 noiembrie 2016 00:44:31 | |
|---|---|---|---|
| Problema | Factorial | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.83 kb |
#include<stdio.h>
FILE*fin,*fout;
inline int nr_zero(int N)
{
int put=5;
int zero=0;
while(N/put)
{
zero+=N/put;
put*=5;
}
return zero;
}
inline int caut(int st,int dr,int P)
{
while(st<=dr)
{
int mij=(st+dr)/2;
int opt=nr_zero(mij);// ca sa ne fie bine,sa nu ne fie rau
if(opt==P)
{
return mij-mij%5;
}
if(opt<P)
{
st=mij+1;
}
if(opt>P)
{
dr=mij;
}
}
return -1;
}
int main()
{
fin=fopen("fact.in","r");
fout=fopen("fact.out","w");
int P;
fscanf(fin,"%d",&P);
if(P==0)
{
fprintf(fout,"1");
}
fprintf(fout,"%d",caut(4*P/5,5*P,P));
fclose(fin);
fclose(fout);
return 0;
}
