Pagini recente » Cod sursa (job #1072833) | Cod sursa (job #2417104) | Cod sursa (job #862328) | Cod sursa (job #2863870) | Cod sursa (job #1746090)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin ("fact.in");
ofstream fout("fact.out");
int a,p,i,m,n,x,r,j;
long long st,dr,mid;
long long cautare (long long st, long long dr, long long p){
int i,m,n,mid;
while(st<=dr){
mid=(st+dr)/2;
m=0;
for(i=5;i<=mid;i+=5){
n=i;
while(n%5==0){
m++;
n=n/5;
}
}
if(m==p){
mid=mid-mid%5;
return mid;
}
else
if(m>p)
dr=mid-1;
else
st=mid+1;
}
return -1;
}
int main () {
fin>>p;
if(p==0){
fout<<1;
return 0;
}
st=1;
dr=5;
while(x<p){
x=x+st;
st=st*5;
dr=dr*5;
}
st/=5;
dr/=5;
if(x==p){
fout<<dr;
return 0;
}
a=x-1-st;
r=(p-a)/5;
st=st+20*r;
if(p<x-6){
i=6;
r=1;
a=cautare(dr-20,dr,x-i);
fout<<a<<"\n";
while(a==-1){
r++;
a=cautare(dr-20*r,dr,x-i);
i+=5;
fout<<a<<" ";
}
fout<<"\n";
dr=a;
r=(x-i-p)/5;
dr=dr-20*r;
}
a=cautare (st,dr,p);
fout<<a;
}