韦达定理的写法需要二分吗?
查看原帖
韦达定理的写法需要二分吗?
167697
BartAllen楼主2022/11/3 12:29
#include<bits/stdc++.h>
using namespace std;

const int K = 1e5 + 5;
int k;
long long n[K], e[K], d[K];
long long p, q;

int main() {
	long long i, j, m;
	cin >> k;
	for (i = 1; i <= k; i++)
		cin >> n[i] >> e[i] >> d[i];
	for (i = 1; i <= k; i++) {
		m = n[i] - e[i] * d[i] + 2;
		double delta = m * m - 4 * n[i];
		if (delta < 0) {
			cout << "NO" << endl;
			continue;
		}
		long long x = sqrt(delta);
		if ((double) (x * x) != delta) {
			cout << "NO" << endl;
			continue;
		}
		if ((m - x) & 1 != 0) {
			cout << "NO" << endl;
			continue;
		}
		p = (m - x) / 2;
		q = m - p;
		cout << p << " " << q << endl;
	}
	return 0;
}
2022/11/3 12:29
加载中...