题目名称 | 3929. [CSP 2023J]一元二次方程 |
---|---|
输入输出 | uqe.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 | syzhaoss 于2023-10-22加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:30, 提交:133, 通过率:22.56% | ||||
┭┮﹏┭┮ | 100 | 0.006 s | 1.72 MiB | C++ |
宇战 | 100 | 0.010 s | 1.15 MiB | C++ |
whaleeee | 100 | 0.017 s | 4.95 MiB | C++ |
超人 | 100 | 0.063 s | 4.59 MiB | C++ |
AeeE5x | 100 | 0.076 s | 3.57 MiB | C++ |
yuan | 100 | 0.079 s | 5.16 MiB | C++ |
嗨嗨嗨 | 100 | 0.080 s | 3.37 MiB | C++ |
xxz | 100 | 0.086 s | 3.53 MiB | C++ |
孙翙轩 | 100 | 0.087 s | 3.59 MiB | C++ |
海绵宝宝 | 100 | 0.117 s | 3.56 MiB | C++ |
关于 一元二次方程 的近10条评论(全部评论) | ||||
---|---|---|---|---|
好好好
| ||||
回复 @王和谐 :
加油
超人
2023-11-03 20:27
3楼
| ||||
回复 @王和谐 :
没事,提高组欢迎你
此账号已注销
2023-10-31 19:04
2楼
| ||||
三年oi一场空,不开long long 见祖宗
王和谐
2023-10-30 21:20
1楼
|
众所周知,对一元二次方程 $ax ^ 2 + bx + c = 0, (a \neq 0)$,可以用以下方式求实数解:
计算 $\Delta = b ^ 2 - 4ac$,则:
例如:
在题面描述中 $a$ 和 $b$ 的最大公因数使用 $\gcd(a, b)$ 表示。例如 $12$ 和 $18$ 的最大公因数是 $6$,即 $\gcd(12, 18) = 6$。
现在给定一个一元二次方程的系数 $a, b, c$,其中 $a, b, c$ 均为整数且 $a \neq 0$。你需要判断一元二次方程 $a x ^ 2 + bx + c = 0$ 是否有实数解,并按要求的格式输出。
在本题中输出有理数 $v$ 时须遵循以下规则:
$*$ 由有理数的定义,存在唯一的两个整数 $p$ 和 $q$,满足 $q > 0$,$\gcd(p, q) = 1$ 且 $v = \frac pq$。
$*$ 若 $q = 1$,则输出 {p}
,否则输出 {p}/{q}
,其中 {n}
代表整数 $n$ 的值;
例如:
当 $v = -0.5$ 时,$p$ 和 $q$ 的值分别为 $-1$ 和 $2$,则应输出 -1/2
;
当 $v = 0$ 时,$p$ 和 $q$ 的值分别为 $0$ 和 $1$,则应输出 0
。
对于方程的求解,分两种情况讨论:
$1.$ 若 $\Delta = b ^ 2 - 4ac < 0$,则表明方程无实数解,此时你应当输出 NO
;
$2.$ 否则 $\Delta \geq 0$,此时方程有两解(可能相等),记其中较大者为 $x$,则:
$(1)$ 若 $x$ 为有理数,则按有理数的格式输出 $x$。
$(2)$ 否则根据上文公式,$x$ 可以被唯一表示为 $x = q _ 1 + q _ 2 \sqrt r$ 的形式,其中:
$* q _ 1, q _ 2$ 为有理数,且 $q _ 2 > 0$;
$* r$ 为正整数且 $r > 1$,且不存在正整数 $d > 1$ 使 $d ^ 2 \mid r$(即 $r$ 不应是 $d ^ 2$ 的倍数);
此时:
1.若 $q _ 1 \neq 0$,则按有理数的格式输出 $q _ 1$,并再输出一个加号 +
;
2.否则跳过这一步输出;
随后:
1.若 $q _ 2 = 1$,则输出 sqrt({r})
;
2.否则若 $q _ 2$ 为整数,则输出 {q2}*sqrt({r})
;
3.否则若 $q _ 3 = \frac 1{q _ 2}$ 为整数,则输出 sqrt({r})/{q3}
;
4.否则可以证明存在唯一整数 $c, d$ 满足 $c, d > 1, \gcd(c, d) = 1$ 且 $q _ 2 = \frac cd$,此时输出 {c}*sqrt({r})/{d}
;
上述表示中 {n}
代表整数 {n}
的值,详见样例。
如果方程有实数解,则按要求的格式输出两个实数解中的较大者。否则若方程没有实数解,则输出 NO
。
输入的第一行包含两个正整数 $T, M$,分别表示方程数和系数的绝对值上限。
接下来 $T$ 行,每行包含三个整数 $a, b, c$。
输出 $T$ 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。
每行输出的字符串中间不应包含任何空格。
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
见附件中的 uqe/uqe2.in
与 uqe/uqe2.ans
。
对于所有数据有:$1 \leq T \leq 5000$,$1 \leq M \leq 10 ^ 3$,$|a|,|b|,|c| \leq M$,$a \neq 0$。
其中: