Pagini recente » Cod sursa (job #2089150) | Cod sursa (job #2480984) | Cod sursa (job #876350) | Cod sursa (job #1861763) | Cod sursa (job #2110736)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ecuatie.in");
ofstream fout("ecuatie.out");
long long a, b, aa, cc, c, k, nrda, nrdc, diva[30002], divc[30002];
long long nrdap, nrdam, divap[30002], divam[30002], nrdcp, nrdcm, divcp[30002], divcm[30002];
void div_a()
{
long long i;
for(i=1; i*i<=aa; i++)
if(aa%i==0)
{
if(i!=aa/i)
{
divap[++nrdap]=i;
divap[++nrdap]=aa/i;
divam[++nrdam]=(-1)*i;
divam[++nrdam]=(-1)*aa/i;
}
else
{
divap[++nrdap]=i;
divam[++nrdam]=(-1)*i;
}
}
}
void div_c()
{
long long i;
for(i=1; i*i<=cc; i++)
if(cc%i==0)
{
if(i!=cc/i)
{
divcp[++nrdcp]=i;
divcp[++nrdcp]=cc/i;
divcm[++nrdcm]=(-1)*i;
divcm[++nrdcm]=(-1)*cc/i;
}
else
{
divcp[++nrdcp]=i;
divcm[++nrdcm]=(-1)*i;
}
}
}
void afis_sol(long long p1, long long q1, long long p2, long long q2)
{
fout<<'(';
if(p1==-1) fout<<"-x";
else if(p1!=1) fout<<p1<<"x";
else fout<<"x";
if(q1>0) fout<<"+"<<q1<<")(";
else fout<<q1<<")(";
if(p2==-1) fout<<"-x";
else if(p2!=1) fout<<p2<<"x";
else fout<<"x";
if(q2>0) fout<<"+"<<q2<<")";
else fout<<q2<<")";
}
int main()
{
long long i, j, p2, q2, ct=0;
fin>>a>>b>>c>>k;
aa=max(a,a*(-1));
cc=max(c,c*(-1));
div_a();
div_c();
sort(divam+1,divam+nrdam+1);
sort(divap+1,divap+nrdap+1);
sort(divcm+1,divcm+nrdcm+1);
sort(divcp+1,divcp+nrdcp+1);
for(i=1; i<=nrdam; i++)
diva[++nrda]=divam[i];
for(i=1; i<=nrdap; i++)
diva[++nrda]=divap[i];
for(i=1; i<=nrdcm; i++)
divc[++nrdc]=divcm[i];
for(i=1; i<=nrdcp; i++)
divc[++nrdc]=divcp[i];
if(nrda*nrdc<k)
{
fout<<-1;
return 0;
}
for(i=1; i<=nrda; i++)
for(j=1; j<=nrdc; j++)
{
p2=a/diva[i], q2=c/divc[j];
if(diva[i]*q2+p2*divc[j]==b)
{
ct++;
if(ct==k)
{
afis_sol(diva[i],divc[j],p2,q2);
return 0;
}
}
}
fout<<-1<<'\n';
return 0;
}