#1487. 四则运算进阶

四则运算进阶

题目背景

温馨提示:本题已经证明可以使用C++语言通过

题目描述

小明要做几十亿道小数整数混合运算计算题,可是他懒得算,于是想编写一个进阶的计算器。请你帮他完成这个任务。

输入格式

输入 33 个有理数,分别为 aa、opop、bb。

对于 opop 输入的值,解释如下:

opop的值 运算
11 加(+)
22 减(-)
33 乘(×)
44 除(÷)

输出格式

一个有理数 resres,为运算之后的结果。

请注意,如果计算结果为小数。若小数点后的位数小于 77,则输出原结果;若结果为无限或超过 77 位的有限小数,请将结果保留 77 位小数。

当 op=4op = 4 且 b=0b = 0 (即除数为 00)时,输出Do not div with 0!

程序可能输入非法数据,如果检测是非法数据,输出Error!

输入输出样例 #1

输入 #1

2.5 3 2

输出 #1

5

输入输出样例 #2

输入 #2

2 4 0

输出 #2

Do not div with 0!

说明/提示

对于所有合法的测试数据保证:a,b∈{x∣x∈Q,x<1012}a,b \in \{x | x \in \mathbb Q , x<10^{12}\}、op∈{1,2,3,4}op \in \{1, 2, 3, 4\};

若数据非法,则该数据可能不在以上给定的范围之内,或输入的数据不是数字,请特别处理;

对于 C/C++ 编写者,您可能需要使用小数高精度算法来处理大范围小数运算;请注意潜在的精度问题。

测试点 取值范围 性质 占比
4、7∼13、154、7∼13、15 a、b<109a、b<10^9 a、ba、b为整数 30%
1∼3、161∼3、16 a、b<1012a、b<10^{12} 12%
5∼6、14、24、285∼6、14、24、28 a、b<109a、b<10^9 a、ba、b为整数 且 res>109res>10^9 18%
17∼21、23、2517∼21、23、25 a、b<1012a、b<10^{12} a、ba、b为小数 30%
22、29∼3022、29∼30 / a、ba、b为非法数据 10%