Pagini recente » Cod sursa (job #34417) | Cod sursa (job #888179) | Cod sursa (job #36193) | Cod sursa (job #1933108) | Cod sursa (job #1541908)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
#define nw10to8z 1000000
long long fives[nw10to8z],twos[nw10to8z];
int five(int i)
{
int nr= 0;
while(i>=5)
{
if (i % 5 == 0)
nr++,i/=5;
else
i = 4;
}
return nr;
}
int main()
{
int n,lo,hi,p,mij;
in>> p;
twos[ 1] = fives[ 1] = 0;
for(int i = 1 ; i <= nw10to8z; i++)
{
if (i % 5 == 0)
fives[i] = fives[i-5] +five(i);
else
fives[i] = fives[i-1];
}
//for(int i = 1000000 ; i<= nw10to8z && fives[i]!=-1; i ++)
// cout<<fives[i]<<" "<<i<<"\n";
lo = 1,hi = nw10to8z;
p;
in>>p;
while ( hi - lo >1) //ne trebuie cea mai mica pozitie pentru care min(fives[mij],twos[mij])>=p, daca exista
{
mij = lo +(hi-lo )/2 ;
if( fives[mij] >= p)
hi = mij;
else
lo = mij+1;
}
if( fives[lo] >= p)
{
out<<lo;
return 0;
}
if ( fives[hi] >= p)
{
out<<hi;
return 0;
}
out<<"-1";
return 0;
}