1. 程式人生 > >Educational Codeforces Round 54 (Rated for Div. 2) C

Educational Codeforces Round 54 (Rated for Div. 2) C

原題連結:傳送門

題意:給你一個數d,問是否存在 a 和 b,使得a + b = d 並且a * b = d,沒有輸出N,有則輸出Y並輸出a 和 b 的值.
思路:聯立兩個方程組,得到一個一元二次方程 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; }