Pagini recente » Cod sursa (job #1435603) | Cod sursa (job #223699) | Cod sursa (job #1993465) | Cod sursa (job #274739) | Cod sursa (job #1964475)
#include<fstream>
#include<math.h>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("ecuatie.in");
ofstream fout("ecuatie.out");
int a,b,c,k,d,x,q,p;
int i, aux1;
double m,n,el;
vector <pair<int, int> > v;
void afis(int p, int q)
{
if(p==1)
fout<<"("<<"x";
else
if(p==-1)
fout<<"("<<"-x";
else
fout<<"("<<p<<"x";
if(q<0)
fout<<"-"<<-q<<")";
else
fout<<"+"<<q<<")";
}
int main()
{
fin>>a>>b>>c>>k;
d=b*b-4*a*c;
n=-b-int(sqrt(d));
n/=2*a;
m=-b+int(sqrt(d));
m/=2*a;
n=-n;
m=-m;
if(a<0)
a=-a;
for(i=1;i*i<=a;i++)
if(a%i==0)
{
if(n*i==int(n*i)&&m*a/i==int(m*a/i))
{
v.push_back(make_pair(i, n*i));
v.push_back(make_pair(-i, -n*i));
}
if(m*i==int(m*i)&&m!=n&&n*a/i==int(n*a/i))
{
v.push_back(make_pair(i, m*i));
v.push_back(make_pair(-i, -m*i));
}
if(i!=a/i)
{
if(n*a/i==int(n*a/i)&&m*i==int(m*i))
{
v.push_back(make_pair(a/i, n*a/i));
v.push_back(make_pair(-a/i, -n*a/i));
}
if(m*a/i==int(m*a/i)&&m!=n&&n*i==int(n*i))
{
v.push_back(make_pair(a/i, m*a/i));
v.push_back(make_pair(-a/i, -m*a/i));
}
}
}
sort(v.begin(), v.end());
p=v[k-1].first;
q=v[k-1].second;
afis(p, q);
if(q/p==n)
el=m;
else
el=n;
p=a/p;
q=el*p;
afis(p, q);
fin.close();
fout.close();
return 0;
}