2025-09-17 13:00:45
发布于:福建
为啥TLE了啊
#include <bits/stdc++.h>
using namespace std;
long long t , m;
//最大公约数,约分时使用
long long gcd(long long a , long long b) {
return b == 0 ? a : gcd(b , a % b);
}
int main( ) {
cin >> t >> m;
while(t--){
long long a , b , c;
cin >> a >> b >> c;
long long delta = b * b - 4 * a * c;
if (delta < 0) {
cout << "NO" << endl;
continue;
}
long long sqr_del = 1;
for (int i = 2 ; i * i <= delta ; i++) {
while (delta % (i * i) == 0) {
sqr_del *= i;
delta /= i * i;
}
}
long long p = -b;
long long q = 2 * a;
if (q < 0) q =q , p = -p;
if (delta == 1) delta = 0 , p += sqr_del;
long long g1 = gcd(abs(p) , q);
long long g2 = gcd(sqr_del , q);
if (delta == 0) {
if (p % q) cout << p / q;
else cout << p / g1 << "/" << q / g1;
} else {
if (p != 0) {
if (p % q) cout << p / q;
else cout << p / g1 << "/" << q / g1;
cout << "+";
if (sqr_del / g2 != 1) cout << sqr_del / g2 << "+";
cout << "sqrt(" << delta << ")";
if (q / g2 != 1) cout << "/" << q / g2;
}
cout << endl;
}
}
return 0;
}
这里空空如也
有帮助,赞一个