Pagini recente » Cod sursa (job #766409) | Cod sursa (job #1618218) | Cod sursa (job #1273229) | Cod sursa (job #862842) | Cod sursa (job #2565009)
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int st,dr,mi,p,q,poz;
int v[15],nrfact,k[15];
int putere(int f,int nr)
{
int put=f,s=0;
while(put<=nr)
{
s+=nr/put;
put*=f;
}
return s;
}
bool good(int nr)
{
for(int i=1;i<=nrfact;i++)
if(k[i]>putere(v[i],nr))
return 0;
return 1;
}
int main()
{
fin>>p>>q;
for(int d=2;d*d<=p;d++)
{
if(p%d==0)
{
v[++nrfact]=d;
while(p%d==0)
{
p/=d;
k[nrfact]++;
}
k[nrfact]*=q;
}
}
if(p>1)
{k[++nrfact]=q;
v[nrfact]=p;}
for(int i=1;i<=nrfact;i++)
cout<<v[i]<<" ";
int nr=(1<<30)-1+(1<<30);
st=1;
dr=nr;
while(st<=dr)
{
mi=(st+dr)/2;
if(good(mi))
{
dr=mi-1;
poz=mi;
}
else st=mi+1;
}
fout<<poz;
}