#P2252. Equation Solver
Equation Solver
题目描述
编写一个程序,用于求解一元线性方程。
输入
输入包含多个方程,每个方程独占一行。所有方程均为长度小于100的字符串,并严格遵循以下语法(EBNF格式):
Equation := 表达式 '=' 表达式
Expression := 项 { ('+' | '-') 项 }
Term := 因子 { '*' 因子 }
Factor := 数字 | 'x' | '(' 表达式 ')'
Number := 数字 | 数字 数字
Digit := '0' | '1' | ... | '9'
尽管该语法可能构造出非线性方程(例如 ),但我们保证输入文件中所有方程均为一元线性方程。同时,所有子表达式也保证是线性的。例如,不会出现类似 的测试用例,虽然该方程整体是线性的,但包含非线性子表达式()。
注意,输入中的所有数字均为非负整数,而方程的解 可能为实数。
输出
对于每个测试用例,输出一行 (其中 为测试用例编号),并根据以下情况输出结果:
- 如果方程无解,输出 。
- 如果方程有无限多解,输出 。
- 如果方程有唯一解,输出 ,其中解为对应的实数(保留六位小数)。
每个测试用例输出结束后,额外输出一个空行。
样例输入 1
x+x+x=10
4*x+2=19
3*x=3*x+1+2+3
(42-6*7)*x=2*5-10
样例输出 1
Equation #1
x = 3.333333
Equation #2
x = 4.250000
Equation #3
No solution.
Equation #4
Infinitely many solutions.
来源
Ulm Local 1997