Pagini recente » Cod sursa (job #2129966) | Cod sursa (job #991517) | Cod sursa (job #2844831) | Monitorul de evaluare | Cod sursa (job #626939)
Cod sursa(job #626939)
#include<fstream>
#include<iostream>
using namespace std;
unsigned short v[30000001];
void prelucrare()
{
long i,y,c;
for(i=5;i<=300000;i=i+5) {
y=i;
c=0;
while(y%5==0) {
c++;
y=y/5;
}
v[i]=c;
}
}
long fact(long x)
{
long c,i,y;
c=0;
for(i=5;i<=x;i=i+5) {
y=i;
while((y%5==0)&&(y>300000)) {
c++;
y=y/5;
}
c=c+v[y];
}
return c;
}
int main ()
{
long p,q,m,c,a,n;
ifstream f("fact.in");
ofstream g("fact.out");
f>>n;
f.close();
prelucrare();
p=1;
q=10000000;
a=0;
while(p<=q) {
m=(p+q)/2;
c=fact(m);
if(c<n)
p=m+1;
else if(c>n)
q=m-1;
else {
a=1;
break;
}
}
if(a==0)
g<<"-1";
else {
while(m%5!=0)
m--;
if(m==0)
m++;
g<<m;
}
g.close();
return 0;
}