#3. 一元二次方程(uqe)

一元二次方程(uqe)

一元二次方程(uqe)

本题为 CSP-J 2023 第二轮真题。本 OJ 采用标准输入输出评测,无需文件重定向。

【题目描述】 现在给定一个一元二次方程的系数a, b, c,其中a, b, c .均.为.整.数.且a̸ = 0。你需要判 断一元二次方程ax2 + bx + c = 0 是否有实数解,并按要求的格式输出。 .在.本.题.中.输.出.有.理.数v .时.须.遵.循.以.下.规.则: • 由有理数的定义,存在.唯.一的两个整数p 和q,满足q > 0,gcd(p, q) = 1 且 v = p q。 • .若q = 1,.则.输.出{p};.否.则.输.出{p}/{q};其中{n} 代表整数n 的值; • 例如: – 当v = −0.5 时,p 和q 的值分别为−1 和2,则应输出‐1/2; – 当v = 0 时,p 和q 的值分别为0 和1,则应输出0。 .对.于.方.程.的.求.解,.分.两.种.情.况.讨.论:

  1. 若∆= b2 −4ac < 0,则表明方程无实数解,此时你应当输出NO;
  2. 否则∆≥0,此时方程有两解(可能相等),记其中.较.大.者为x,则: (1). 若x 为有理数,则按有理数的格式输出x。 (2). 否则根据上文公式,x 可以被.唯.一表示为x = q1 + q2 √r 的形式,其中: • q1, q2 为有理数,且q2 > 0; • r 为正整数且r > 1,且不存在正整数d > 1 使d2|r(即r 不应是d2 的倍 数); 此时:
  3. 若q1̸ = 0,则按照有理数的格式输出q1,并再输出一个加号+;
  4. 否则跳过这一步输出; 随后:
  5. 若q2 = 1,则输出sqrt({r});
  6. 否则若q2 为整数,则输出{q2}*sqrt({r});
  7. 否则若q3 = 1 q2 为整数,则输出sqrt({r})/{q3};
  8. 否则可以证明存在唯一整数c, d 满足c, d > 1, gcd(c, d) = 1 且q2 = c d,此时 输出{c}sqrt({r})/{d}; 上述表示中{n} 代表整数n 的值,详见样例。 如果方程有实数解,则按要求的格式输出两个实数解中的较大者。否则若方程没有 实数解,则输出NO。 【输入格式】 从文件uqe.in 中读入数据。 输入的第一行包含两个正整数T, M,分别表示方程数和系数绝对值的上界; 接下来T 行,每行包含三个整数a, b, c。 【输出格式】 输出到文件uqe.out 中。 输出T 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。 .每.行.输.出.的.字.符.串.中.间.不.应.包.含.任.何.空.格。 【样例1 输入】 1 9 1000 2 1 ‐1 0 3 ‐1 ‐1 ‐1 4 1 ‐2 1 5 1 5 4 6 4 4 1 7 1 0 ‐432 8 1 ‐3 1 9 2 ‐4 1 10 1 7 1 【样例1 输出】 1 1 2 NO 3 1 4 ‐1 5 ‐1/2 6 12sqrt(3) 7 3/2+sqrt(5)/2 8 1+sqrt(2)/2 9 ‐7/2+3*sqrt(5)/2 【样例2】 见选手目录下的uqe/uqe2.in 与uqe/uqe2.ans。 【数据范围】 对于所有测试数据有:1 ≤T ≤5000,1 ≤M ≤103,|a|, |b|, |c| ≤M,a̸ = 0。 测试点编号 M ≤ 特殊性质A 特殊性质B 特殊性质C 1 1 是 是 是 2 20 否 否 否 3 103 是 是 4 否 5 否 是 是 6 否 7, 8 否 是 9, 10 否 其中: • 特殊性质A:保证b = 0; • 特殊性质B:保证c = 0; • 特殊性质C:如果方程有解,那么方程的两个解都是整数。

旅游巴士(bus) 旅游巴士(bus)

⚠️ 本题暂以题面样例作为测试点(0 个),完整数据补充中。可先用样例自测。