Pagini recente » Cod sursa (job #2226605) | Cod sursa (job #2929572) | Cod sursa (job #895578) | Cod sursa (job #1494002) | Cod sursa (job #237179)
Cod sursa(job #237179)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long a, b, c, k, y, delta, x1, x2, aux, i, v[1000], p, t[1000], o, P1, P2, Q1, Q2, g;
int cmp(const void *w, const void *z) {
return ( *(int*)w - *(int*)z );
}
int main() {
freopen("ecuatie.in", "r", stdin);
freopen("ecuatie.out", "w", stdout);
scanf("%ld%ld%ld%ld", &a, &b, &c, &k);
delta = b * b - 4 * a * c;
if (sqrt(delta) * sqrt(delta) != delta) {
printf("-1");
return 0;
}
x1 = (-b - sqrt(delta)) / (2 * a);
x2 = (-b + sqrt(delta)) / (2 * a);
aux = sqrt(abs(a));
for (i = 1; i <= aux; ++i) {
if (a % i == 0) {
v[++p] = i;
v[++p] = -i;
v[++p] = a / i;
v[++p] = a / (-i);
}
}
qsort(v + 1, p, sizeof(v[0]), cmp);
t[1] = v[1];
o = 1;
for (i = 2; i <= p; ++i) {
if (v[i] != v[i - 1]) {
t[++o] = v[i];
}
}
if (k > o) {
printf("-1");
return 0;
}
if (k <= o) {
g = k / 2;
if (k % 2 == 1) {
P1 = t[g + 1];
Q1 = -x1 * t[g + 1];
P2 = a / t[g + 1];
Q2 = -x2 * (a / t[g + 1]);
} else {
P1 = t[g];
Q1 = -x2 * t[g];
P2 = a / t[g];
Q2 = -x1 * (a / t[g]);
}
printf("(");
if (P1 == 1) {
printf("x");
} else {
if (P1 == - 1) {
printf("-x");
} else {
printf("%ldx", P1);
}
}
if (Q1 >= 0) {
printf("+%ld)(", Q1);
} else {
printf("%ld)(", Q1);
}
if (P2 == 1) {
printf("x");
} else {
if (P2 == -1) {
printf("-x");
} else {
printf("%ldx", P2);
}
}
if (Q2 >= 0) {
printf("+%ld)", Q2);
} else {
printf("%ld)", Q2);
}
}
return 0;
}