Pagini recente » Cod sursa (job #1663662) | Cod sursa (job #2093419) | Cod sursa (job #3249294) | Cod sursa (job #306369) | Cod sursa (job #286172)
Cod sursa(job #286172)
#include <algorithm>
#include <math.h>
using namespace std;
#define DIM 10005
struct rez {int p1,p2,q1,q2;} sol[DIM];
int a,b,c,k,x1,x2,nr;
double delta;
void print (int val)
{
int i;
if (!val || val>nr)
printf ("-1");
else
{
if (sol[val].p1==1)
printf ("(x");
else if (sol[val].p1==-1)
printf ("(-x");
else
printf ("(%dx",sol[val].p1);
if (sol[val].p2>0)
printf ("+%d)",sol[val].p2);
else
printf ("%d)",sol[val].p2);
if (sol[val].q1==1)
printf ("(x");
else if (sol[val].q1==-1)
printf ("(-x");
else
printf ("(%dx",sol[val].q1);
if (sol[val].q2>0)
printf ("+%d)",sol[val].q2);
else
printf ("%d)",sol[val].q2);
}
exit (0);
}
void ecuatie ()
{
int d;
delta=sqrt (b*b-4*a*c);
if ((int)delta!=(float)delta)
print (0);
d=(int)delta;
x1=(-b-d)/(2*a);
x2=(-b+d)/(2*a);
}
void divizori ()
{
int d;
for (d=1; d*d<a; ++d)
if (a%d==0)
{
sol[++nr].p1=d;
sol[nr].q1=a/d;
sol[nr].p2=-x1*d;
sol[nr].q2=-x2*(a/d);
sol[++nr].p1=-d;
sol[nr].q1=-a/d;
sol[nr].p2=x1*d;
sol[nr].q2=x2*(a/d);
sol[++nr].p1=a/d;
sol[nr].q1=d;
sol[nr].p2=-x1*(a/d);
sol[nr].q2=-x2*d;
sol[++nr].p1=-a/d;
sol[nr].q1=-d;
sol[nr].p2=x1*(a/d);
sol[nr].q2=x2*d;
sol[++nr].p1=d;
sol[nr].q1=a/d;
sol[nr].p2=-x2*d;
sol[nr].q2=-x1*(a/d);
sol[++nr].p1=-d;
sol[nr].q1=-a/d;
sol[nr].p2=x2*d;
sol[nr].q2=x1*(a/d);
sol[++nr].p1=a/d;
sol[nr].q1=d;
sol[nr].p2=-x2*(a/d);
sol[nr].q2=-x1*d;
sol[++nr].p1=-a/d;
sol[nr].q1=-d;
sol[nr].p2=x2*(a/d);
sol[nr].q2=x1*d;
}
if (d*d==a)
{
sol[++nr].p1=d;
sol[nr].q1=a/d;
sol[nr].p2=-x1*d;
sol[nr].q2=-x2*(a/d);
sol[++nr].p1=-d;
sol[nr].q1=-a/d;
sol[nr].p2=x1*d;
sol[nr].q2=x2*(a/d);
sol[++nr].p1=d;
sol[nr].q1=a/d;
sol[nr].p2=-x2*d;
sol[nr].q2=-x1*(a/d);
sol[++nr].p1=-d;
sol[nr].q1=-a/d;
sol[nr].p2=x2*d;
sol[nr].q2=x1*(a/d);
}
}
int cmp (rez a,rez b)
{
return a.p1<b.p1 || (a.p1==b.p1 && a.q1<a.q2);
}
int main ()
{
freopen ("ecuatie.in","r",stdin);
freopen ("ecuatie.out","w",stdout);
scanf ("%d%d%d%d",&a,&b,&c,&k);
ecuatie ();
divizori ();
sort (sol+1,sol+nr+1,cmp);
print (k);
return 0;
}