30 分,WA on #2, 3, 4 & #7, 8, 9, 10
// 期望得分:100pts
#include <bits/stdc++.h>
#define int long long
using namespace std;
int M;
int sqrtez(int delta){
int ans = 1;
for (int i = 2; i * i <= delta; i ++){
if (delta % (i * i) == 0){
ans = i;
}
}
return ans;
}
void solve1(){
int a, b, c;
cin >> a >> b >> c;
int delta = b * b - 4 * a * c;
if (delta < 0){
puts("NO");
return ;
}
int x1, x2, y = 2 * a;
if ((int)sqrt(delta) * (int)sqrt(delta) == delta){
// delta 有理
x1 = (int)sqrt(delta) - b;
x2 = 0 - b - (int)sqrt(delta);
int ax1x, ax1y, ax2x, ax2y;
// x1
ax1x = x1 / __gcd(x1, y);
ax1y = y / __gcd(x1, y);
// x2
ax2x = x2 / __gcd(x2, y);
ax2y = y / __gcd(x2, y);
if (ax1x * 1.0 / ax1y >= ax2x * 1.0 / ax2y){
if (ax1y == 1){
cout << ax1x << '\n';
}else{
if ((ax1y < 0 && ax1x >= 0) || (ax1x < 0 && ax1y < 0)){
ax1x = 0 - ax1x;
ax1y = 0 - ax1y;
}
cout << ax1x << '/' << ax1y << '\n';
}
}else{
if (ax2y == 1){
cout << ax2x << '\n';
}else{
if ((ax2y < 0 && ax2x >= 0) || (ax2x < 0 && ax2y < 0)){
ax2x = 0 - ax2x;
ax2y = 0 - ax2y;
}
cout << ax2x << '/' << ax2y << '\n';
}
}
}else{
// delta 无理 -2 16 -8
// q1
x1 = -b;
if (x1 != 0){
if (x1 % y == 0){
cout << x1 / y;
}else{
int x1x, x1y;
x1x = x1 / __gcd(x1, y);
x1y = y / __gcd(x1, y);
if ((x1x >= 0 && x1y < 0) || (x1x < 0 && x1y < 0)){
x1x = - x1x;
x1y = - x1y;
}
cout << x1x << '/' << x1y;
}
cout << '+';
}
// q2
int q2 = sqrtez(delta);
int r = delta / q2 / q2;
if (q2 == y){
cout << "sqrt(" << r << ")\n";
}else if (q2 % y == 0){
if (q2 / y == -1) cout << "sqrt(" << r << ")\n";
else cout << (q2 / y < 0 ? -1 : 1) * q2 / y << "*sqrt(" << r << ")\n";
}else{
int q2x, q2y;
q2x = q2 / __gcd(q2, y);
q2y = y / __gcd(q2, y);
if ((q2y < 0 && q2x >= 0) || (q2x < 0 && q2y < 0)){
q2x = - q2x;
q2y = - q2y;
}
if (q2x < 0) q2x = - q2x;
if (q2x != 1) cout << q2x << '*';
cout << "sqrt(" << r << ")/" << q2y << '\n';
}
}
}
signed main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen("uqe.in", "r", stdin);
// freopen("uqe.out", "w", stdout);
int T;
cin >> T >> M;
while (T --) solve1();
}