警示后人
查看原帖
警示后人
307940
aaaaaaaawsl楼主2022/10/29 19:25

如果你是用完全平方推出来的 p+qp + q, pqp-q 的式子,注意会炸ll

请使用 long double ,如下

#include<bits/stdc++.h>
using namespace std;
int k;
int main(){
	scanf("%d", &k);
	long double ans1, ans2, g, n, e, d, j;
	while(k --){
		scanf("%Lf%Lf%Lf", &n, &d, &e);
		g = 1.0 * n - e * d + 2;
		j = sqrt(g * g - 4 * n);
		ans1 = 1.0 * (g + j) / 2;
		ans2 = 1.0 * g - ans1;
		if((long long) ans1 != ans1 || (long long) ans2 != ans2){
			printf("NO\n");
		}
		else printf("%lld %lld\n", (long long)(ans1 < ans2 ? ans1 : ans2), (long long)((ans1 > ans2 ? ans1 : ans2)));
	}
	return 0;
}

2022/10/29 19:25
加载中...