CF1076C Meme Problem(韦达定理)
CF1076C Meme Problem
题意:
\(T\)组询问,给出一个非负整数\(d\),请你找出两个非负实数\(a\)和\(b\),使得\((a+b=d)\&\&(a*b=d)\),\(0≤d≤1e3\)。
思路:
韦达定理:
对于一元二次函数\(ax^{2}+bx+c=0,(a\neq0)\),两根\(x_1,x_2\)有以下关系.
- \(x_1+x_2=-\frac{b}{a}\)
- \(x_1*x_2=\frac{c}{a}\)
构造出符合题意的一元二次函数:\(x^{2}-dx+d=0,(a\neq0)\)
- 利用判别公式\(\Delta =b^{2}-4ac\)判是否存在解。
- 利用求根公式\(x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\)求根。
Code:
int main(){
double d;
int t;
cin>>t;
while(t--){
cin>>d;
if(d*d-4*d<0){//判别公式
cout<<"N"<<endl;
}
else{//求根公式
double x1=(d+sqrt(d*d-4*d))/2;
double x2=(d-sqrt(d*d-4*d))/2;
printf("Y %.9f %.9f\n",x1,x2);
}
}
return 0;
}