我不想解方程!!!
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
给定一元二次方程
其中 均为整数,且 。
令 ,则:
-
若 ,方程没有实数解。
-
若 ,方程的两个实数解为
当 时,两个实数解相等。
你需要判断给定方程是否有实数解。如果有,按照输出格式中的要求输出两个实数解中的较大者;否则输出 NO。
输入格式
第一行包含两个整数 (,),分别表示方程的数量和系数的绝对值上限。
接下来 行,每行包含三个整数 (,,),表示一个一元二次方程的系数。
输出格式
输出 行,每行包含一个字符串,表示对应方程的答案。
若 ,输出 NO。否则,记两个实数解中的较大者为 ,按照以下规则输出。
下文中的 {n} 表示整数 的实际值,输出时不包含花括号。
1. 有理数的输出格式
本题中所有有理数均按照以下规则输出。
对于有理数 ,将其写成唯一的最简分数
其中 为整数,,且 。
-
若 ,输出
{p}。 -
否则,输出
{p}/{q}。
例如, 应输出为 -1/2, 应输出为 0。
如果 为有理数,直接按照上述格式输出 。
2. 无理数的输出格式
如果 为无理数,则它可以唯一地表示为
其中:
-
均为有理数,且 。
-
为大于 的整数,且不存在整数 使得 。
首先处理有理部分:
-
若 ,先按照有理数的输出格式输出 ,再输出一个加号
+。 -
若 ,省略有理部分和加号。
随后输出根式部分。
将 写成最简分数
其中 为正整数,且 。按照以下四种情况输出:
-
若 且 ,输出
sqrt({r})。 -
若 且 ,输出
{u}*sqrt({r})。 -
若 且 ,输出
sqrt({r})/{v}。 -
若 且 ,输出
{u}*sqrt({r})/{v}。
每行输出的字符串中不得包含任何空格。
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
样例解释
对于以下方程:
-
的判别式为 ,没有实数解,应输出
NO。 -
的两个实数解均为 ,应输出
1。 -
的两个实数解分别为 和 ,应输出较大者
2。
以下是无理数的输出格式示例:
-
应输出为
sqrt(2)。 -
应输出为
2*sqrt(3)。 -
应输出为
sqrt(5)/2。 -
应输出为
3*sqrt(2)/4。 -
应输出为
-1/2+sqrt(3)/2。