Pagini recente » Cod sursa (job #1812828) | Cod sursa (job #2443462) | Cod sursa (job #2907008) | Cod sursa (job #2644998) | Cod sursa (job #2615356)
#include<bits/stdc++.h>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int const Max=1e8;
int M=Max,p;
int numar_zerouri(int n)
{
int p=5;
int s=0;
while(n/p)
{
s+=n/p;
p*=5;
}
return s;
}
void caut_binara(int x, int st, int dr, int& M)
{
if(st<=dr)
{
int p=5;
int mij=(st+dr)/2, s=numar_zerouri(mij);
if(s==x) ///daca am numarul corect de zerouri
{
if(M>mij)
M=mij;
while(numar_zerouri(mij-1)==x) ///gasesc cel mai mic numar, care sa respecte cerintele
{
mij--;
M=mij;
}
}
else if (s>x) caut_binara(x, st, mij-1, M);
else caut_binara(x, mij+1, dr, M);
}
}
int main()
{
f>>p;
if(p==0)
{
g<<1;
return 0;
}
caut_binara(p,0,10*p,M);
g<<M;
return 0;
}