Cod sursa(job #967455)
Utilizator | Cretu Bogdan reking | Data | 27 iunie 2013 18:58:00 |
---|---|---|---|
Problema | Factorial | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <iostream>
#include <fstream>
#define NMax 100000001
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int fct (int x)
{
int a=5,rez=0;
while (x/a)
{
rez=rez+x/a;
a=a*5;
}
return rez;
}
int main ()
{
int p;
f>>p;
if (p==0) g<<1;
else
{
int min=1,max=NMax,mid;
bool ok=false;
while (min<max && !ok)
{
mid=min+(max-min)/2;
if (fct(mid)<p) min=mid;
else if (fct(mid)>p) max=mid;
else ok=true;
}
if (ok)
{
while (mid%5) mid--;
g<<mid;
}
else g<<-1;
}
}