将输入的一行方程按 =
分成左右两侧。整式只包含整数、一个小写字母变量及 + - =
,如 a+1=2a-9
。
核心算法:线性扫描 + 累加系数法 对每一侧从左到右扫描,统一在最前补一个正号,随后按“符号(+/-) + [可选整数] + [可选变量]”读取一个个项:
a
、2a
),把(符号 × 系数,默认 1)累加到该侧的变量系数 coef
;cons
。将左右两侧化为:
L: coefL * x + consL
,R: coefR * x + consR
输入一个仅由整数、某个小写字母以及 {'+’,'−','='} 三种数学符号组成的一元一次方程,方程中的小写字母代表末知数,并且:
(1) 因为这是一元一次方程,所以只有一种字母会出现在方程中;
(2) 所有方程中出现的所有整数都小于 100000 。
(3) 请注意,减号字符 '−' 也可以作为负号使用。
(4) 请注意,当结果为 0 时应避免答案具有负号。形如 x=−0.000 的答案不可得分。
题目保证输入的所有一元一次方程均是一个合法的方程且有唯一实数解,例如下面 3 个一元一次方程都是合法的:
a+1=2
2x−4=x+8
−7+z=10086
输入一行字符串,即题目所述的一元一次方程。字符串长度小于 100 。
输出一个字母、字符 ’=' 和一个保留到小数点后三位的小数,表示一元一次方程的解。
输入
a+1=2a-9
输出
a=10.000