为啥我没写无理数的情况,60pts?
查看原帖
为啥我没写无理数的情况,60pts?
948410
dws_rwhy楼主2024/10/9 22:29
#include<bits/stdc++.h>
using namespace std;
int a, b, c;
int t;
int delta;
int m;
int p, q;
int gcd(int a, int b) {
	a = abs(a);
	b = abs(b);
	return b > 0 ? gcd(b, a % b) : a;
}
int main() {
	cin >> t >> m;
	while (t--) {
		cin >> a >> b >> c;
		delta = b * b - 4 * a * c;
//		cout<<delta<<endl;
		if (delta < 0) {
			cout << "NO\n";   //无解
		} else {
			if (sqrt(delta) == (int) (sqrt(delta))) { //有理数的情况
				p = -b + sqrt(delta);
				q = 2 * a;
				if (q < 0) {
					q = -2 * a;
					p = b + sqrt(delta);
				}
				if (p % q == 0) {
					cout << p / q << endl;
				} else {
					int gcdd = gcd(p, q);
					p /= gcdd, q /= gcdd;
					cout << p << "/" << q << endl;
				}
}
	}
		}
	}
	return 0;
}
2024/10/9 22:29
加载中...