TLE
2025-09-17 13:00:45
发布于:福建
20阅读
0回复
0点赞
为啥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;
}
全部评论 1
- 每日tle - 2025-10-06 来自 上海 0






有帮助,赞一个