Pagini recente » Cod sursa (job #1132342) | Cod sursa (job #2510689) | Cod sursa (job #1941461) | Cod sursa (job #1398761) | Cod sursa (job #2530398)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream in("ecuatie.in");
ofstream out("ecuatie.out");
struct ec2 {
ll a, b, c, d;
};
ll delta(ll a, ll b, ll c) {
ll d = b * b - 4 * a * c;
if (d < 0) {
return -1;
}
if (sqrt(d) != trunc(sqrt(d))) {
return -1;
}
return trunc(sqrt(d));
}
bool cmp(ec2 a, ec2 b) {
if (a.a == b.a) {
return a.b < b.b;
}
return a.a < b.a;
}
vector < ec2 > vek;
int main() {
ll a, b, c, k;
cin >> a >> b >> c >> k;
ll d = delta(a, b, c);
if (d == -1) {
return cout << d << "\n", 0;
}
ll x1 = (-b - d) / (2 * a);
ll x2 = (-b + d) / (2 * a);
for (int i = 1; i * i <= a; i++) {
if (a % i == 0) {
ll p1 = i;
ll p2 = a / p1;
ll p11 = -i;
ll p22 = a / p11;
vek.push_back({p1, -x1 * p1, p2, -x2 * p2});
vek.push_back({p1, -x2 * p1, p2, -x1 * p2});
vek.push_back({p11, -x1 * p11, p22, -x2 * p22});
vek.push_back({p11, -x2 * p11, p22, -x1 * p22});
if (a / i != i) {
ll p1 = a / i;
ll p2 = i;
ll p11 = - a / i;
ll p22 = -i;
vek.push_back({p1, -x1 * p1, p2, -x2 * p2});
vek.push_back({p1, -x2 * p1, p2, -x1 * p2});
vek.push_back({p11, -x1 * p11, p22, -x2 * p22});
vek.push_back({p11, -x2 * p11, p22, -x1 * p22});
}
}
}
sort(vek.begin(), vek.end(), cmp);
out << "(";
if (vek[k - 1].a == -1) {
out << "-";
}
else {
if (vek[k - 1].a != 1) {
out << vek[k - 1].a;
}
}
out << "x";
if (vek[k - 1].b > 0) {
out << "+";
out << vek[k - 1].b;
}
else {
out << vek[k - 1].b;
}
out << ")";
out << "(";
if (vek[k - 1].c == -1) {
out << "-";
}
else {
if (vek[k - 1].c != 1) {
out << vek[k - 1].a;
}
}
out << "x";
if (vek[k - 1].d > 0) {
out << "+";
out << vek[k - 1].d;
}
else {
out << vek[k - 1].d;
}
out << ")";
return 0;
}