Pagini recente » Cod sursa (job #266238) | Cod sursa (job #1759305) | Cod sursa (job #1386709) | Cod sursa (job #2794117) | Cod sursa (job #2615359)
#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);
if(M==Max)
{
g<<-1;
return 0;
}
g<<M;
return 0;
}