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;
}
posted @ 2020-07-12 22:11  Qquun  阅读(58)  评论(0)    收藏  举报