SP8542 POCALC2 - Modern Pocket Calculator
题目描述
Adam 对袖珍计算器充满了热爱,不仅是早期的型号,还有带两行 LCD 显示屏且具有数学运算符优先级的现代计算器。输入行显示你键入的表达式,按下 \[=\] 键后,输出行立即显示结果。给定计算器上的输入行,程序需要输出相应的结果。在按下 \[S-D\] 键时,计算器可以在分数和小数格式之间切换,因此输出中必须包含这两种格式的表示。
输入格式
输入的第一行是一个正整数 $t$($t < 1000$),表示测试用例的数量。接下来的每个测试用例由三行或一行组成,代表计算器输入行中的表达式,然后紧接着一个空行。表达式由 $n$ 个数字($0 < n < 10$)构成,每两个数字之间使用一个运算符(+、-、x、:)分隔,并且数字与运算符之间以一个空格隔开。表达式都有效且运算没有未定义的情况。
每个数字可能被表示为小数、分数或带分数,且均为非负数。如果一个数字是正数,其十进制值在 $10^{-9}$ 和 $10^{9}$ 之间,分子和分母也是非负小于 $10^{9}$ 的整数,并且小数部分最多有 9 位。所有运算过程中这些限制条件仍然有效。分数中的线长度取决于分子或分母的最大长度。若分子和分母长度不同,则较短的数靠分数线居中排列。如居中不易实现,则向右偏移一位。
输出格式
对于每个测试用例,输出计算器输出行上显示的结果:首先是分数形式,然后是小数形式,两者用 " \[S-D\] " 分隔。如果结果是负数,负号必须直接紧跟在整数部分或分数线上方。
分数形式应以最简形式表示为真分数或带分数。如果数值可以用整数表示,应优先输出整数表示。分子和分母位置需要遵循输入中描述的排版方式。
在 " \[S-D\] " 之后,要准确输出小数表示。截图展示了计算器甚至能在小数表示中展示循环小数,因此程序也需同样处理,用下划线在上一行表示循环小数。可以假定小数展开不会超过 100 位(这是假定为 XXL 显示屏的计算器)。
每种结果占用的输出行数取决于结果本身:若结果为分数,则使用三行输出;如为整数,则仅需一行。请注意,除了最后一个测试用例,其他的每一个测试用例之后请输出一个空行。并且要避免输出多余的空格。
说明/提示
- 测试用例总数:$1 \le t < 1000$
- 表达式中的数目:$0 < n < 10$
- 数字的十进制值介于 $10^{-9}$ 和 $10^{9}$ 之间
- 分子和分母的值不超过 $10^{9}$
- 小数最多有 9 位有效数字
- 所有表达式有效且运算定义完整
- 小数展开长度不超过 100 位
**本翻译由 AI 自动生成**