评审使用的Case(完整版)
评审所使用的Case新鲜发布。
其中
1~75属于基本Case
76~101属于中级Case
102~属于高级Case
整体的分数分布如下:
弱弱地说,1 mod 0用Matlab算出来是1…… 回复 2楼daodao的帖子
嘿嘿。我看到你的作品返回值是1.....
关于模除(取余)运算的定义,指的是“取得两个数相除后结果的余数”
虽然计算机上可以采用减法预算模拟取余的结果,但是终究 0 是一个邪恶的值。
另:
微软的Microsoft Mathematics计算1%0的结果是Indeterminate
不必纠结,反正这个Case不影响你的比赛结果。 那个啥,分数针对每一个Case不是平均分布的。比如你计算不出来1+2=3肯定扣分比你计算1 mod 0 = 1扣的分多N倍。
另:凡是义无反顾的告诉我 sin(30)大约等于0.4999999999999999999994左右吧的同学,每个CASE得分率为单个Case对应基础分的25% 回复 3楼Leo的帖子
嗯,想到定义,顿时觉得释然了……:D 我估计因格式都扣完了,,,,,, 本来打算午觉了,看到case又来测了下。。
崩了六个数据,其中两个出意料之外,后几个case精度一般,最大的bug就是整数后都带个.0,还有0.4999999999999999999994这种:T,, 回复 6楼Gwanwlw的帖子
格式没有扣分。因为输出格式没有要求。 回复 7楼Gwanwlw的帖子
没太细看为啥你的123456789*123456789=1.524157875019052e+16
末尾丢失了一位精度。
你用了双精度乘法? Case暴露了我的作品的几个问题,现在此总结一下:
1.var和varp,stdev和stdevp搞反了,不能原谅的失误。
2.mod运算符后不能粘连操作数,原先是支持的,但是因为作品允许定义变量,mod后若粘连变量时会像个函数名,本着不能存在二义性操作的思想,所以去掉了mod粘连的支持,而添加了相同功能又允许粘连的运算符%。事实上,因为这个特性,Case中只要出现mod粘连的都会报错。
3.在一些运算过后小数位末尾会出现一些无意义的0(如5.000),这是由于decimal类库的设计,暗示运算曾经到达这个精度级,因此没有处理,估计会扣不少格式分。
4.一些函数运算精度不够,因为很多函数我其实没有去实现,而是直接把math标准库的函数包装后导入到计算器的运行空间,因为该库实际上是C语言中math.h的简单封装,因此函数很大程度上是基于浮点数而实现的,即便我已经实现了高精度的类型,除非重新实现,不然精度依然受限于标准库。
5.计算器支持复数,因此支持-1的开根号运算,复数运算由cmath模块导出,因为复数在很大的情况下是在工程上有用途的,而在现实计算的情况下是无用的,因此我统一将这类支持复数运算的函数重命名为z开头的函数,如:zsqrt(-1) == 1j,这里在说明文档中有说明。