Cod sursa(job #2024208)
| Utilizator | Data | 20 septembrie 2017 09:37:28 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.89 kb |
#include<fstream>
using namespace std;
int nr_zerouri(int k)
{
int t=0,p=5;
while(k>=p)
{
t=t+k/p;
p=p*5;
}
return t;
}
int main()
{
ifstream read("fact.in");
ofstream write("fact.out");
int P;
read>>P;
if(P==0)
{
write<<1;
}
else
{
int cpst=5,cpdr=403225807,cpmj;
while(cpst!=cpdr)
{
cpmj=(cpst+cpdr)/2;
if(nr_zerouri(cpmj)>P)
{
cpdr=cpmj;
}
else if(nr_zerouri(cpmj)<P)
{
cpst=cpmj;
}
else if(nr_zerouri(cpmj)==P)
{
cpst=cpmj;
cpdr=cpmj;
break;
}
}
if (nr_zerouri(cpst)==P) {write<<cpst-cpst%5;}
else {write<<-1;}
}
return 0;
}
