原题链接:传送门
题意:给你一个数d,问是否存在 a 和 b,使得a + b = d
并且a * b = d
,没有输出N
,有则输出Y
并输出a 和 b 的值,a和b保留到小数点后9位.
思路:联立两个方程组,得到一个一元二次方程 a2 - ad + d = 0,即 x2 - ax + a = 0.即可求出 a ,b.
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if( (n*n - 4*n) < 0)
printf("N\n");
else {
double x1 = (n + sqrt(n*n - 4*n) ) / 2;
double x2 = n - x1;
printf("Y %.9lf %.9lf\n",x1,x2);
}
}
return 0;
}