# Write your MySQL query statement below
2118. 建立方程
表: Terms
+-------------+------+ | Column Name | Type | +-------------+------+ | power | int | | factor | int | +-------------+------+ power 是该表具有唯一值的列。 该表的每一行包含关于方程的一项的信息。 power 是范围为 [0, 100] 的整数。 factor 是范围为 [-100,100] 的整数,且不能为零。
你有一个非常强大的程序,可以解决世界上任何单变量的方程。传递给程序的方程必须格式化如下:
"<sign><fact>X^<pow>"
的格式,其中:
<sign>
是 "+"
或者 "-"
。<fact>
是 factor
的 绝对值。<pow>
是 power
的值。1
, 不要加上 "^<pow>"
.
power = 1
并且 factor = 3
, 将有 "+3X"
。0
, 不要加上 "X"
和 "^<pow>"
.
power = 0
并且 factor = -3
, 将有 "-3"
。编写一个解决方案来构建方程。
结果格式如下所示。
示例 1:
输入: Terms 表: +-------+--------+ | power | factor | +-------+--------+ | 2 | 1 | | 1 | -4 | | 0 | 2 | +-------+--------+ 输出: +--------------+ | equation | +--------------+ | +1X^2-4X+2=0 | +--------------+
示例 2:
输入: Terms 表: +-------+--------+ | power | factor | +-------+--------+ | 4 | -4 | | 2 | 1 | | 1 | -1 | +-------+--------+ 输出: +-----------------+ | equation | +-----------------+ | -4X^4+1X^2-1X=0 | +-----------------+
扩展: 如果幂函数不是主键,但每个幂函数在答案中都是唯一的,那么解决方案中需要改变什么?
原站题解
mysql 解法, 执行用时: 396 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 23:03:34
# Write your MySQL query statement below with t as ( select power ,case when power = 0 then if(factor>0,concat('+',factor),factor) when power = 1 then if(factor>0,concat('+',factor,'X'),concat(factor,'X')) else if(factor>0,concat('+',factor,'X','^',power),concat(factor,'X','^',power)) end term from Terms ) select concat(group_concat(term order by power desc separator ''),'=0') equation from t
mysql 解法, 执行用时: 295 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 23:03:23
select concat(group_concat(term order by power desc SEPARATOR ''), '=0') as equation from (select power, concat(if(factor>0,'+',''), factor, case power when 1 then 'X' when 0 then '' else concat('X^',power) end) as term from Terms)a