Cod sursa(job #1568822)
| Utilizator | Data | 14 ianuarie 2016 18:52:53 | |
|---|---|---|---|
| Problema | Factorial | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include<iostream>
#include<fstream>
using namespace std;
int zero(long long n)
{
int ans=0;
while(n>=5){
ans+=n/5;
n/=5;
}
return ans;
}
int cautare(int p)
{
long long st=1;
long long dr=200000005;
while(st<dr)
{
long long mij=(st+dr)/2;
if(zero(mij)==p)
return mij-mij%5;
else if(zero(mij)>=p)
dr=mij-1;
else
st=mij+1;
}
return -1;
}
int main()
{
ifstream cin("fact.in");
ofstream cout("fact.out");
long long p;
cin>>p;
if(p!=0)
cout<<cautare(p);
else
cout<<1;
}
