Pagini recente » Cod sursa (job #197272) | Cod sursa (job #946108) | Cod sursa (job #2973717) | Cod sursa (job #2819394) | Cod sursa (job #1703132)
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("ecuatie.in");
ofstream g("ecuatie.out");
int k,n,m,a,nr,b,c,i,j,p,q,v1[10009],v2[10009];
void desca()
{
int i,nr=a,rad;
if(nr<0)
nr=-nr;
rad=(int)sqrt((double)nr);
if(rad*rad==nr)
{
m=1;
v1[m]=rad;
--rad;
}
for(i=1;i<=rad;++i)
if(nr%i==0)
{
++m;
v1[m]=i;
++m;
v1[m]=nr/i;
}
for(i=1;i<=m;++i)
v1[i+m]=-v1[i];
m*=2;
sort(v1+1,v1+m+1);
}
void descc()
{
int i,nr=c,rad;;
if(nr<0)
nr=-nr;
rad=(int)sqrt((double)nr);
if(rad*rad==nr)
{
n=1;
v2[n]=rad;
--rad;
}
for(i=1;i<=rad;++i)
if(nr%i==0)
{
++n;
v2[n]=i;
++n;
v2[n]=nr/i;
}
for(i=1;i<=n;++i)
v2[i+n]=-v2[i];
n*=2;
sort(v2+1,v2+n+1);
}
int main()
{
f>>a>>b>>c>>k;
desca();
descc();
if(m*n<k)
{g<<-1<<'\n';return 0;}
for(i=1;i<=m;++i)
{
p=int (a/v1[i]);
for(j=1;j<=n;++j)
{
q=int(c/v2[j]);
if(p*v2[j]+q*v1[i]==b)
++nr;
if(nr==k)
{
g<<'(';
if(v1[i]==-1)
g<<"-x";
else
if(v1[i]==1)
g<<"x";
else
g<<v1[i]<<'x';
if(v2[j]<0)
g<<v2[j]<<')';
else
g<<'+'<<v2[j]<<')';
g<<'(';
if(p==-1)
g<<"-x";
else
if(p==1)
g<<"x";
else
g<<p<<'x';
if(q<0)
g<<q<<')';
else
g<<'+'<<q<<')';
return 0;
}
}
}
if(nr<k)
g<<-1<<'\n';
return 0;
}