CodeforcesJul 31, 2025

Meme Problem

Hazrat Ali

Codeforces

You are given a non-negative integer d. You have to find two non-negative real numbers a and b such that a+b=d and ab=d.

Input

The first line contains t (1t103) — the number of test cases.

Each test case contains one integer d (0d103).

Output

For each test print one line.

If there is an answer for the i-th test, print "Y", and then the numbers a and b.

If there is no answer for the i-th test, print "N".

Your answer will be considered correct if |(a+b)ab|106 and |(a+b)d|106.

Example
Input
7
69
0
1
4
5
999
1000
Output
Y 67.985071301 1.014928699
Y 0.000000000 0.000000000
N
Y 2.000000000 2.000000000
Y 3.618033989 1.381966011
Y 997.998996990 1.001003010
Y 998.998997995 1.001002005


Solution

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        int d;
        cin >> d;
        double a, b;
        bool found = false;
        if (d == 0)
        {
            found = true;
            a = 0;
            b = 0;
        }
        else if (d * d - 4 * d >= 0)
        {
            found = true;
            b = (-d + sqrt(d * d - 4 * d)) / -2.0;
            a = d / b;
        }
        if (found)
        {
            cout << fixed << setprecision(9);
            cout << "Y " << a << " " << b << endl;
        }
        else
        {
            cout << "N" << endl;
        }
    }
    return 0;
}






Comments