#P1559. Equation Elation

    ID: 560 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 3 上传者: 标签>模拟难度普及/提高-普及-Mid-Central USA 1996

Equation Elation

题目描述

某小学数学教材的作者请你编写一个程序来求解简单的代数方程。作者希望用程序避免在编写答案手册时出现人为错误。教材作者会提供一个包含简单问题的文本文件,要求你的程序按步骤求解这些方程。所有问题都将以代数等式的形式呈现,具体语法为:一个由整数常量、四种基本算术运算符、一个等号和一个变量组成的代数表达式。例如:

12 - 4 * 3 = x

对于答案手册,问题不仅要被解决,还需要一步一步地展示求解过程。对于上述输入行,相应的输出应为:

12 - 4 * 3 = x
12 - 12 = x
0 = x

你的程序要解决的简单问题仅限于包含整数的乘法、除法、加法和减法运算。注意,如上述示例所示,计算必须遵循算术运算的标准优先级规则。所有乘法和除法运算从左到右进行,然后再进行所有加法和减法运算,同样从左到右。你可以假设所有除法运算的结果都是整数。

输入格式

输入包含若干个待求解的方程。每个方程将包含1到20个运算符和2到21个整数操作数(当然,操作数的数量总是比运算符多一个)。输入中的整数操作数可能带有前导符号(即可能以一元运算符开头)。输入行中的空格是可选的,即运算符和操作数之间可能有空格,也可能没有。变量名由1到8个字母字符组成。

输出格式

每个问题的输出应首先显示待求解的问题,然后是每一步运算后的输出行。输出中数字和运算符之间的间距并不关键,但必须确保答案正确且输出所有正确的步骤。

典型的输入由多个代数问题组成,每个问题占一行。每个输入问题的输出之间应用一个空行分隔。文件结束标志着输入的结束。

输入示例1

3 * 4 + 4 - 1 / 1 = xyzzy
12 + 2 * 12 / 2 - 1 = y
2 * -3 + -6 - +4 = r
2*-3+-6-+4=r

输出示例1

3 * 4 + 4 - 1 / 1 = xyzzy
12 + 4 - 1 / 1 = xyzzy
12 + 4 - 1 = xyzzy
16 - 1 = xyzzy
15 = xyzzy

12 + 2 * 12 / 2 - 1 = y
12 + 24 / 2 - 1 = y
12 + 12 - 1 = y
24 - 1 = y
23 = y

2 * -3 + -6 - 4 = r
-6 + -6 - 4 = r
-12 - 4 = r
-16 = r

2 * -3 + -6 - 4 = r
-6 + -6 - 4 = r
-12 - 4 = r
-16 = r

来源

Mid-Central USA 1996