#include<bits/stdc++.h>
#include<math.h>
//#define int long long
//#define int __int128
#define max(x, y) (x > y? x : y)
#define min(x, y) (x < y? x : y)
#define lowbit(x) (x & -x)
//#define N 100010
#define Fuck return
#define CCF 0
using namespace std;
int kaifang[5000010];
void init() {
for(int i = 1; i < 2236; i++) {
for(int j = i * i; j < (i + 1) * (i + 1); j++) {
kaifang[j] = i;
}
}
for(int i = 4999696; i <= 5000000; i++) {
kaifang[i] = 2236;
}
}
struct num_in_math {
int _1fenzi1;
int _2fenmu1;
int _3fenzi2xishu;
int _4fenzi2;
int _5fenmu2;
} ans;
int gcd(int x, int y) {
if(y) return gcd(y, x % y);
else return x;
}
int g;
num_in_math huajian() {
if(ans._3fenzi2xishu) {
if(ans._5fenmu2 < 0) {
ans._3fenzi2xishu *= -1;
ans._5fenmu2 *= -1;
}
for(int i = kaifang[ans._4fenzi2]; i >= 2; i--) {
// if(i > sqrt(ans._4fenzi2)) i = sqrt(ans._4fenzi2);
if(ans._4fenzi2 % (i * i) == 0) {
ans._3fenzi2xishu *= i;
ans._4fenzi2 /= i * i;
break;
}
}
g = gcd(abs(ans._3fenzi2xishu), abs(ans._5fenmu2));
ans._3fenzi2xishu /= g;
ans._5fenmu2 /= g;
}
if(ans._2fenmu1 < 0) {
ans._1fenzi1 *= -1;
ans._2fenmu1 *= -1;
}
if(ans._4fenzi2 == 1 && ans._3fenzi2xishu != 0) {
g = gcd(ans._2fenmu1, ans._5fenmu2);
ans._1fenzi1 *= g;
ans._2fenmu1 *= g;
ans._3fenzi2xishu *= g;
ans._5fenmu2 *= g;
ans._1fenzi1 += ans._3fenzi2xishu;
ans._3fenzi2xishu = 0;
}
g = gcd(abs(ans._1fenzi1), abs(ans._2fenmu1));
ans._1fenzi1 /= g;
ans._2fenmu1 /= g;
}
int T, M;
int a, b, c, deltarune;
signed main() {
// freopen("uqe.in","r",stdin);
// freopen("uqe.out","w",stdout);
// cout << gcd(64, 36);
// Fuck CCF;
init();
cin >> T >> M;
while(T--) {
scanf("%d%d%d", &a, &b, &c);
ans._1fenzi1 = 0;
ans._2fenmu1 = 1;
ans._3fenzi2xishu = 0;
ans._4fenzi2 = 0;
ans._5fenmu2 = 1;
deltarune = b * b - 4 * a * c;
if(deltarune < 0) {
printf("NO\n");
continue;
}
if(b == 0) {
// cout << "b = 0\n";
if(a < 0) ans._3fenzi2xishu = -1;
else ans._3fenzi2xishu = 1;
ans._1fenzi1 = 0;
ans._4fenzi2 = c * (-1) * a;
ans._5fenmu2 = a;
// huajian();
} else if(c == 0) {
if(a * b < 0) {
ans._1fenzi1 = -b;
ans._2fenmu1 = a;
}
} else if(deltarune == 0) {
ans._3fenzi2xishu = 0;
ans._2fenmu1 = 2 * a;
ans._1fenzi1 = b * (-1);
} else {
if(a < 0) ans._3fenzi2xishu = -1;
else ans._3fenzi2xishu = 1;
ans._4fenzi2 = deltarune;
ans._5fenmu2 = 2 * a;
ans._2fenmu1 = 2 * a;
ans._1fenzi1 = b * (-1);
}
huajian();
if(ans._1fenzi1) {
printf("%d", ans._1fenzi1);
if(ans._2fenmu1 != 1) printf("/%d", ans._2fenmu1);
}
if(ans._3fenzi2xishu && ans._4fenzi2) {
if(ans._1fenzi1 != 0) {
if(ans._3fenzi2xishu > 0) putchar('+');
if(ans._3fenzi2xishu == -1) putchar('-');
}
if(abs(ans._3fenzi2xishu) != 1) printf("%d*", ans._3fenzi2xishu);
printf("sqrt(%d)", ans._4fenzi2);
if(ans._5fenmu2 != 1) printf("/%d", ans._5fenmu2);
}
if(ans._1fenzi1 == 0 && (ans._3fenzi2xishu == 0 || ans._4fenzi2 == 0)) putchar('0');
putchar('\n');
}
Fuck CCF;
}
在本地没问题,一交就TLE