Mai intai trebuie sa te autentifici.
Cod sursa(job #1258196)
Utilizator | Data | 8 noiembrie 2014 16:29:21 | |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.89 kb |
#include <fstream>
#define Capat 100000000000000000/2
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long n;
long long numar(long long y){
long long s,p=5;
long long t = y;
while(y != 0){
s += t/p;
y = t/p;
p *= 5;
}
return s;
}
long long caut(long long x){
long long left = 0 , right = Capat;
long long mij;
while(left < right){
mij = (left + right)/2;
if(numar(mij)==x)
return mij;
else
if(numar(mij) < x)
left = mij + 1;
else
if(numar(mij) > x)
right = mij - 1;
}
}
int main()
{
f >> n;
if(n==0) g<<1;
else{
for(long long i = caut(n); i >= 0; i--){
if(numar(i) != numar(caut(n))){
g << i+1;
return 0;
}
}
g<<-1;}
return 0;
}