WA on #2 4 9 10
#include <bits/stdc++.h>
using namespace std;
inline int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a%b);
}
inline bool n2(int n)
{
int sqr = sqrt(n);
return sqr*sqr == n;
}
inline int xn2(int n)
{
// 求n的最大平方因子
int sqr = sqrt(n);
for(int i = sqr;i >= 1;--i)
{
if(n % (i*i) == 0) return i*i;
}
return 0;
}
inline void f(int a, int b, int c)
{
if(a < 0)
{
a = -a;
b = -b;
c = -c;
}
int tri = b*b-4*a*c;
if(tri < 0)
{
cout << "NO\n";
return;
}
if(n2(tri))
{
int trim = 2*a, tris = max(-b+sqrt(tri), -b-sqrt(tri));
int g = abs(gcd(trim, tris));
trim /= g;
tris /= g;
if(tris % trim == 0) printf("%d\n", tris/trim);
else printf("%d/%d\n", tris, trim);
return;
}
int q1s = -b, q1m = 2*a;
int g = abs(gcd(q1s, q1m));
q1s /= g;
q1m /= g;
if(q1s != 0 && q1m != 0)
{
if(q1s % q1m == 0) printf("%d+", q1s/q1m);
else printf("%d/%d+", q1s, q1m);
}
int big = xn2(tri), q2s = sqrt(big), q2m = 2*a;
int r = tri/big;
g = abs(gcd(q2s, q2m));
q2s /= g;
q2m /= g;
if(q2s == q2m) printf("srqt(%d)\n", r);
else if(q2s % q2m == 0)
{
printf("%d*srqt(%d)\n", q2s/q2m, r);
return;
}
else
{
double q2 = 1.0*q2s/q2m;
int q3 = 1/q2;
if(q3 == 1/q2) printf("sqrt(%d)/%d\n", r, q3);
else printf("%d*sqrt(%d)/%d\n", q2s, r, q2m);
}
}
int main()
{
int t, m, a, b, c;
cin >> t >> m;
while(t--)
{
scanf("%d%d%d", &a, &b, &c);
f(a, b, c);
}
return 0;
}