#CSPJ2023T3. 2023 T3 一元二次方程

2023 T3 一元二次方程

2023 T3 一元二次方程

主知识点:枚举与数学。交叉标签:数学、枚举、字符串。
暴力标注:不属于重点 DP 退路题。
OJ 使用标准输入与标准输出。原比赛文件名为 uqe.in / uqe.out;下方如保留原文件约定,以本句的 OJ 约定为准。
时限 1 秒;内存 512 MiB;测试点 10;总分 100。
数据来源:公开存档数据;未逐文件对照官网下载包。

题目描述

对整数系数 a≠0,b,ca\ne0,b,c 的方程 ax2+bx+c=0ax^2+bx+c=0,若无实根输出 NO,否则输出较大的实根。

有理数用最简分数 p/qp/q 表示,q>0q>0;分母为 1 时只输出整数,0 输出 0。

无理根唯一写为 q1+q2rq_1+q_2\sqrt r,其中 q2>0q_2>0、r>1r>1 是不含平方因子的正整数。若 q1=0q_1=0,省略有理部分及加号;否则先输出 q1q_1 再输出 +。根式部分按以下规则输出:

  • q2=1q_2=1:sqrt(r);
  • q2q_2 为整数:q2*sqrt(r);
  • q2=1/dq_2=1/d:sqrt(r)/d;
  • q2=c/dq_2=c/d 且 c,d>1c,d>1、互质:c*sqrt(r)/d。

括号中的 r、q2、c、d 替换为实际整数,输出中不含空格。

输入格式

输入的第一行包含两个正整数 T,MT, M,分别表示方程数和系数的绝对值上限。

接下来 TT 行,每行包含三个整数 a,b,ca, b, c。

输出格式

输出 TT 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。

每行输出的字符串中间不应包含任何空格。

样例

样例 1

输入:

9 1000
1 -1 0
-1 -1 -1
1 -2 1
1 5 4
4 4 1
1 0 -432
1 -3 1
2 -4 1
1 7 1

输出:

1
NO
1
-1
-1/2
12*sqrt(3)
3/2+sqrt(5)/2
1+sqrt(2)/2
-7/2+3*sqrt(5)/2

数据范围与特殊性质

对于所有数据有:1≤T≤50001 \leq T \leq 5000,1≤M≤1031 \leq M \leq 10 ^ 3,∣a∣,∣b∣,∣c∣≤M|a|,|b|,|c| \leq M,a≠0a \neq 0。

测试点编号 M≤M \leq 特殊性质 A 特殊性质 B 特殊性质 C
11 是
22 2020 否 否 否
33 10310 ^ 3 是 是
44 否
55 否 是 是
66 否
7,87, 8 否 是
9,109, 10 否

其中:

  • 特殊性质 A:保证 b=0b = 0;

  • 特殊性质 B:保证 c=0c = 0;

  • 特殊性质 C:如果方程有解,那么方程的两个解都是整数。

附加样例

本题的公开样例整理在对应的“样例”ZIP 中。样例不计入评测测试点;题面中的样例也已保留。

来源与整理说明

题目原作者/发布者:中国计算机学会 CCF / NOI。题意经过改写,保留公式、输入输出、样例及约束;知识点和暴力标注为本次整理补充。