Cod sursa(job #1776712)
| Utilizator | Data | 11 octombrie 2016 19:02:53 | |
|---|---|---|---|
| Problema | Factorial | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <bits/stdc++.h>
using namespace std;
int p;
int trailingZeroes(int m){
int p=5;
int cnt=0;
while(m/p){
cnt+=m/p;
p=p*5;
}
return cnt;
}
int main()
{
cin>>p;
int left=1;
int right=INT_MAX;
int best=0;
while(left<=right){
int m=left+(right-left)/2;
int x = trailingZeroes(m);
if(x==p){
best=m;
right=m-1;
}
else if(x<p)
left=m+1;
else
right=m-1;
}
if(best==0)
cout<<-1;
else
cout<<best;
return 0;
}
