Cod sursa(job #167058)

Utilizator gabor_oliviu1991gaboru corupt gabor_oliviu1991 Data 28 martie 2008 21:53:59
Problema Ecuatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream.h>
#include<math.h>

int main()
{  long a,b,c,k,d[1000]={0};float x1,x2,delta;
   struct { long p1,q1,p2,q2;}v[1000]={0},aux;
   int i,l=0,j;
   ifstream f("ecuatie.in");
   ofstream g("ecuatie.out");
   f>>a>>b>>c>>k;
   delta=sqrt(b*b-4*a*c);
   x1=float((-b-delta)/float(2*a));
   x2=float((-b+delta)/float(2*a));
   d[l++]=-abs(a);
   for(i=-abs(a)/2;i<0;i++)
	if(a%i==0&&i!=0) d[l++]=i;
   for(i=1;i<=abs(a)/2;i++)
	if(a%i==0)     d[l++]=i;
   d[l]=a;
   if(k>(l*2))  g<<"-1";
   else
	{
   j=0;
   for(i=0;i<l;i++)
	{ v[j].p1=d[i];
	  v[j].q1=-x1*d[i];
	  v[j].p2=a/d[i];
	  v[j].q2=-x2*(a/d[i]);
	  j++;
	  v[j].p1=d[i];
	  v[j].q1=-x2*d[i];
	  v[j].p2=a/d[i];
	  v[j].q2=-x1*(a/d[i]);
	  j++;}

   for(i=0;i<l*2-1;i+=2)
	if(v[i].q1>v[i+1].q1)
	     {aux=v[i];v[i]=v[i+1];v[i+1]=aux;}
   k--;
   if(v[k].p1*v[k].p2==a&&v[k].q1*v[k].q2==c)
  { if(v[k].p1==1)   g<<"(x";
     else
	if(v[k].p1==-1)  g<<"(-x";
	    else       g<<"("<<v[k].p1<<"x";
   if(v[k].q1>0)
	g<<"+"<<v[k].q1<<")";
   else
	g<<v[k].q1<<")";
   if(v[k].p2==1)   g<<"(x";
     else
	if(v[k].p2==-1)  g<<"(-x";
	    else       g<<"("<<v[k].p2<<"x";
   if(v[k].q2>0)
	g<<"+"<<v[k].q2<<")";
   else
	g<<v[k].q2<<")";
   } else g<<"-1";
	}

   return 0;
   }