CF1076C Meme Problem(韦达定理)

CF1076C Meme Problem

题意:

T T T组询问,给出一个非负整数 d d d,请你找出两个非负实数 a a a b b b,使得 ( a + b = d ) & & ( a ∗ b = d ) (a+b=d)\&\&(a*b=d) (a+b=d)&&(ab=d) 0 ≤ d ≤ 1 e 3 0≤d≤1e3 0d1e3

思路:

韦达定理:
对于一元二次函数 a x 2 + b x + c = 0 , ( a ≠ 0 ) ax^{2}+bx+c=0,(a\neq0) ax2+bx+c=0,(a=0),两根 x 1 , x 2 x_1,x_2 x1,x2有以下关系.

  • x 1 + x 2 = − b a x_1+x_2=-\frac{b}{a} x1+x2=ab
  • x 1 ∗ x 2 = c a x_1*x_2=\frac{c}{a} x1x2=ac

构造出符合题意的一元二次函数: x 2 − d x + d = 0 , ( a ≠ 0 ) x^{2}-dx+d=0,(a\neq0) x2dx+d=0,(a=0)

  • 利用判别公式 Δ = b 2 − 4 a c \Delta =b^{2}-4ac Δ=b24ac判是否存在解。
  • 利用求根公式 x = − b ± b 2 − 4 a c 2 a x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} x=2ab±b24ac 求根。

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值