Cod sursa(job #1605634)
| Utilizator | Data | 19 februarie 2016 11:57:37 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
long n;
int fact(long n)
{
int r=0;
while (n>=5) {
r+=n/5;
n/=5;
}
return r;
}
int caut_bin()
{
int pas=1<<30;
int i=0;
while (pas!=0) {
if (fact(i+pas)<n) i+=pas;
pas/=2;
}
return i+1;
}
int main()
{
fin>>n;
if (n==0) fout<<1;
else {
int a=caut_bin();
if (fact(a)==n) fout<<a;
else fout<<-1;
}
}
