90分灵异事件
查看原帖
90分灵异事件
975724
qrse楼主2024/9/15 00:02
#include <bits/stdc++.h>
using namespace std;
int t, m, a, b, c, x, y;
string s;
int main() {
	cin >> t >> m;
	while (t--) {
		cin >> a >> b >> c;
		int delta = (b * b - 4 * a * c);
		if (delta < 0) {
			cout << "NO\n";
			continue;
		}
		int s1 = -b, s2 = (a << 1);
		if (s2 < 0)
			s1 *= -1, s2 *= -1;
		x = __gcd(abs(s1), abs(s2));
		s1 /= x, s2 /= x;
		if (delta == 0) {
			cout << s1;
			if (s2 != 1)cout << "/" << s2;
			cout << "\n";
			continue;
		}
		int s3 = delta, s4 = 1;
		for (int i = sqrt(delta); i >= 2; i--) {
			if ((s3 % (i * i)) == 0) {
				s3 /= (i * i);
				s4 *= i;
			}
		}
		int s5 = abs(a << 1);
		x = __gcd(s4, s5);
		s4 /= x, s5 /= x;
		if (s2 == s5)
			if (s3 == 1) {
				y = s1 + s4;
				int h = s2;
				x = __gcd(abs(y), abs(h));
				y /= x, h /= x;
				cout << y;
				if (h != 1)cout << "/" << h;
				cout << "\n";
				continue;
			}
		if (s3 == 1) {
			int mod = (s2 * s5 / __gcd(s2, s5));
			s1 *= (mod / s2);
			s4 *= (mod / s5);
			cout << s1 + s4;
			if (mod != 1)cout << "/" << mod;
			cout << "\n";
			continue;
		}
		if (s1) {
			cout << s1;
			if (s2 != 1)cout << "/" << s2;
			if (s4 > 0)cout << "+";
		}
		if (s4 == 1)cout << "sqrt(" << s3 << ")";
		else if (s4 == -1)cout << "-sqrt(" << s3 << ")";
		else cout << s4 << "*" << "sqrt(" << s3 << ")";
		if (s5 != 1)cout << "/" << s5;
		cout << "\n";
	}//ans is s1/s2+s4*sqrt(s3)/s5
	return 0;
}

https://www.luogu.com.cn/record/176984377
挂在了#9第2531行

2024/9/15 00:02
加载中...