CSP-J T3
  • 板块灌水区
  • 楼主midsummer_zyl
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/21 19:34
  • 上次更新2023/11/2 12:11:36
查看原帖
CSP-J T3
1025321
midsummer_zyl楼主2023/10/21 19:34
#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
	if(b == 0) return a;
	else return gcd(b, a % b);
}
bool check(long long s) {
	if(s == 0) return false;
	double ss = sqrt(s);
	if((int)ss * (int)ss == s)
		return true;
	return false;
}
int main() {
	long long T, m, a, b, c;
	cin >> T >> m;
	while(T--) {
		cin >> a >> b >> c;
		long long s = b * b - 4 * a * c;
		if(s < 0) {
			printf("NO\n");
			continue;
		}
		if(check(s)) {
			long long s1 = (-b + (int)sqrt(s)) / 2 / a;
			long long s2 = (-b - (int)sqrt(s)) / 2 / a;
			printf("%lld\n", max(s1, s2));
		} else {
			long long s1 = (-b + (int)sqrt(s));
			long long s2 = (-b - (int)sqrt(s));
			long long ans;
			if(2 * a < 0) {
				ans = min(s1, s2);
			} else {
				ans = max(s1, s2);
			}
			if((2 * a < 0 && ans > 0) || (2 * a > 0 && ans < 0))
				printf("-");
			long long ans1 = abs(ans / gcd(ans, 2 * a));
			long long ans2 = abs(2 * a / gcd(ans, 2 * a));
			if(ans1 == ans2) printf("1\n");
			else printf("%lld/%lld\n", ans1, ans2);
		}
	}
	return 0;
}

民间数据 10 分,不是 50 分吗?

2023/10/21 19:34
加载中...