本题测试点错误,题解也全部错误。
查看原帖
本题测试点错误,题解也全部错误。
195942
Terrible楼主2021/12/21 21:24

错误很明显,上一个帖子里已经说得很明白了。题目要求 0r<b0 \le r<brr 必须不为负数。

用下面的代码测一下数据(不要在意是Python,C++也可以测试)

import sys
a,b=map(eval,input().split())
if a<0 and b<0:sys.exit(211)
if a<0:sys.exit(233)
if b<0:sys.exit(255)
print("%.5f"%(a%b))

测试记录:这个题有负数的测试点

有一个测试点输入只有第一个数是负的,还有一个测试点输入只有第二个数是负的。

随便造两个数据,测试一下题解: 10.0 -3.0-10.0 3.0,正确且精确的结果分别为12

下面是题解输出

OIerC2020cmh

1-1

1-1

囧仙

1-1

1-1

1-1

零殇

1-1

给文明以岁月

1-1

无一例外,所有题解给出的所有代码输出的第二个数据的结果都是错误的。

对于也为别人而流给出的代码

a, b = map(float, input().split())
print(a % b)

输出:

-2.02.0

这个代码也是错误的,显然结果不能出现负数,其实最终结果如果是负数时只需要再加上abs(b)即可。

其实还可以加入一组类似-10.0 -3.0的数据。

下面给出Python参考正解:

a,b=map(float,input().split())
print(a%abs(b))

和C/C++参考正解:

#include<stdio.h>
#include<math.h>
int main()
{
	double a,b,ans;
	scanf("%lf%lf",&a,&b);
	ans=fmod(a,b);
	if(ans<0)ans+=abs(b);
	printf("%.6f",ans);
}
2021/12/21 21:24
加载中...