Pagini recente » Cod sursa (job #798599) | Cod sursa (job #1245322) | Cod sursa (job #450989) | Cod sursa (job #2521211) | Cod sursa (job #315305)
Cod sursa(job #315305)
#include<fstream.h>
//using namespace std;
ifstream f1 ("gfact.in");
ofstream f2 ("gfact.out");
int main()
{
long long p,q,pute[1000001][2],nr,k,fl,l,i,j,st,dr,f,put,t,max=0;
f1>>p>>q;
j=0;
for (i=2; i*i<=p; i++)
{
nr=0;
while (p%i==0) {p/=i; nr++;}
if (nr!=0) {j++; pute[j][0]=i; pute[j][1]=nr;}
}
if (p>1) {j++; pute[j][0]=p; pute[j][1]=1;}
for (i=1; i<=j; i++) pute[j][1]*=q;
for (i=1; i<=j; i++)
{
fl=0;
while (fl==0&&st<dr)
{
st=1;
dr=pute[i][1];
k=st+dr/2;
put=0;
f=1;
l=k*pute[i][0];
t=pute[i][0];
while (f==1)
{
put+=l/t;
t*=pute[i][0];
if (l/t==0) f=0;
}
if (put>pute[i][1]) dr=k-1;
if (put<pute[i][1]) st=k+1;
if (put==pute[i][1]) fl=1;
cout<<st<<" "<<dr<<" ";
}
if (l>max) max=l;
}
f2<<max;
return 0;
}