Pagini recente » Cod sursa (job #968863) | Cod sursa (job #2617987) | Cod sursa (job #1145860) | Cod sursa (job #1484067) | Cod sursa (job #127405)
Cod sursa(job #127405)
#include <fstream.h>
#include <math.h>
ifstream fin("ecuatie.in");
ofstream fout("ecuatie.out");
struct cacat
{
int a,b,c,d;
};
typedef struct cacat cc;
cc sir[10000];
int aa,b,c,k,nr,x1,x2;
void citire()
{
fin>>aa>>b>>c>>k;
fin.close();
}
void divizori()
{
for (int i=1;i<sqrt(fabs(aa));i++)
if (aa%i==0)
{
sir[nr++].a=i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
sir[nr++].a=-i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=-i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
sir[nr++].a=aa/i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=aa/i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
sir[nr++].a=-aa/i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=-aa/i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
}
if (sqrt(aa)==long (sqrt(aa)))
{
int i=sqrt(aa);
sir[nr++].a=i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
sir[nr++].a=-i;
sir[nr-1].b=-x1*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x2*(aa/sir[nr-1].a);
sir[nr++].a=-i;
sir[nr-1].b=-x2*sir[nr-1].a;
sir[nr-1].c=aa/sir[nr-1].a;
sir[nr-1].d=-x1*(aa/sir[nr-1].a);
}
}
void ordonare ()
{
int ok=1,p=nr;
while (ok)
{
ok=0;
p--;
for (int i=0;i<p;i++)
if (sir[i].a>sir[i+1].a)
{
cc aux=sir[i];
sir[i]=sir[i+1];
sir[i+1]=aux;
ok=1;
}
else
if (sir[i].a==sir[i+1].a)
if (sir[i].b>sir[i+1].b)
{
cc aux=sir[i];
sir[i]=sir[i+1];
sir[i+1]=aux;
ok=1;
}
}
}
void afisare()
{
k--;
if (k>nr)
fout<<"-1";
else
{
fout<<"(";
if (sir[k].a==1)
fout<<"x";
else
if (sir[k].a==-1)
fout<<"-x";
else
fout<<sir[k].a<<"x";
if (sir[k].b<0)
fout<<sir[k].b;
else
fout<<"+"<<sir[k].b;
fout<<")(";
if (sir[k].c==1)
fout<<"x";
else
if (sir[k].c==-1)
fout<<"-x";
else
fout<<sir[k].c<<"x";
if (sir[k].d<0)
fout<<sir[k].d;
else
fout<<"+"<<sir[k].d;
fout<<")\n";
}
}
int main()
{
citire();
if (sqrt ((b*b-4*aa*c))!=long (sqrt((b*b-4*aa*c))))
fout<<"-1";
else
{
x1= (-b+sqrt ((b*b-4*aa*c)))/(2*aa) ;
x2= (-b-sqrt ((b*b-4*aa*c)))/(2*aa);
divizori();
ordonare();
afisare();
}
fout.close();
return 0;
}