Cod sursa(job #1309431)
| Utilizator | Data | 5 ianuarie 2015 19:04:48 | |
|---|---|---|---|
| Problema | Factorial | Scor | 15 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
int p,n;
int zeros(int x)
{
int d=0,c=0;
for(int i=2;i<=x;i=i*1LL*2)d+=(x/i);
for(int i=5;i<=x;i=i*1LL*5)c+=(x/i);
return min(d,c);
}
int main() {
in>>p;
int left=1,right=numeric_limits<int>::max()-1;
while(right>left)
{
int mid=(right+left)/2;
int t=zeros(mid);
if(p<t)right=mid-1;
if(p>t)left=mid+1;
if(t==p)
{
out<<mid;
return 0;
}
}
out<<-1;
return 0;
}
