Cod sursa(job #1045143)
| Utilizator | Data | 30 noiembrie 2013 22:30:16 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int sol,p;
int check(int n) {
int i;
int s=0;
for(i=5;i<=n;i=i*5){
s+=n/i;
}
return s;
}
void cb(int st,int dr) {
if(st<=dr){
int mid=(dr+st)/2;
if(check(mid)==p && mid%5==0){
sol=mid;
return ;
}
else {
if(check(mid)>=p)
cb(st,mid-1);
else
cb(mid+1,dr);
}
}
}
int main () {
f>>p;
sol=-1;
cb(0,1<<29);
if(sol==-1){
g<<-1;
}
else
g<<sol<<"\n";
return 0;
}