计算 b−w∗w 时,w∗w 会爆 32 位整数。
如果你直接框选 w 的取值范围避免判断 nm 是否为正数,需要注意分类讨论两种不同的范围,同时边界必须严格正确,注意各种取整的正确应用。
判断 nm 是否为正数,以下方法在本题中是不行的:
-
m∗n>0
在 m=0,n=0 时误判。
本题的 m∗n 会爆 64 位整数。
-
m∗n≥0
在 n=0 时误判,导致后面整数模 0 时 RE。
同样爆 64 位整数。
-
m/n>0
m=0 时误判。
n=0 时,整数除 0 RE。
-
m/n≥0
n=0 时,整数除 0 RE。
-
not([m>0]xor[n>0]), [m>0]==[n>0]
n=0,m<=0 时,后面整数模 0 RE。
m=0,n>0 时误判。
-
not([m≥0]xor[n>0]), [m≥0]==[n>0]
n=0,m<0 时,后面整数模 0 RE。
m=0,n<0 时误判。
其它冷门错法也基本是 0 导致的错误。