#include <bits/stdc++.h>
using namespace std;
#define int long long
int t, m, a, b, c, delta, val, g;
int ps[6000001];
map<int, int> mp;
struct Frac{
int a, b;
void get(){
int tmp(__gcd(abs(a), b));
a /= tmp;
b /= tmp;
}
Frac(int x=1, int y=1){
a = x;
b = y;
get();
}
void print(){
if ((a < 0) ^ (b < 0)) cout << '-';
if (abs(b) == 1) cout << abs(a);
else cout << abs(a) << '/' << abs(b);
}
};
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t >> m;
for (int i(0); i<=6*m; ++i) mp[i*i] = i;
while (t--){
cin >> a >> b >> c;
delta = b*b-((a*c)<<2);
if (delta < 0){
cout << "NO\n";
continue;
}
// cout << (3600-4*(-5)*320) << '\n';
// cout << delta << '\n';
a <<= 1;
if (a > 0){
if (mp.count(delta)){
Frac(mp[delta]-b, a).print();
cout << '\n';
continue;
}
g = 1;
for (int i(2); i*i<delta; ++i){
if (delta % i == 0){
int cnt(0);
while (delta % i == 0){
delta /= i;
++cnt;
if (cnt == 2){
g *= i;
cnt = 0;
// cout << "g:" << i << '\n';
}
}
if (cnt) delta *= i;
}
}
// cout << "d:" << delta << '\n';
if (b){
Frac(-b, a).print();
cout << '+';
}
int tmp(__gcd(g, abs(a)));
g /= tmp;
a /= tmp;
if (g > 1) cout << g << '*';
cout << "sqrt(" << delta << ')';
if (a > 1) cout << '/' << a;
cout << '\n';
}else{
if (mp.count(delta)){
Frac(-b-mp[delta], a).print();
cout << '\n';
continue;
}
g = 1;
for (int i(2); i*i<delta; ++i){
if (delta % i == 0){
int cnt(0);
while (delta % i == 0){
delta /= i;
++cnt;
if (cnt == 2){
g *= i;
cnt = 0;
}
}
if (cnt) delta *= i;
}
}
// cout << "d:" << delta << '\n';
// cout << g << '\n';
if (b){
Frac(-b, a).print();
cout << '+';
}
a = -a;
int tmp(__gcd(g, a));
g /= tmp;
a /= tmp;
if (g > 1) cout << g << '*';
cout << "sqrt(" << delta << ')';
if (a > 1) cout << '/' << a;
cout << '\n';
}
}
return 0;
}
不能过大样例,过了。