在学带余除法时上面只提到了正整数的带余除法,余数自然应该是非负不大于除数的数了;很多地方也回避了负数的除法中余数是正数还是负数。
避免C++求余数出现负数解决办法:
假设被除数是 a,除数是 b。
有两种方法:
1. 先令 r = a % b,然后如果 r < 0 再进行修正:
r = a % b;
if (r < 0) r += b;
2. 直接使用语句:
r = (a%b+b)%b;
这样就保证了 r >= 0,缺点是要执行两次取余运算,效率会打点折扣。
在学带余除法时上面只提到了正整数的带余除法,余数自然应该是非负不大于除数的数了;很多地方也回避了负数的除法中余数是正数还是负数。
避免C++求余数出现负数解决办法:
假设被除数是 a,除数是 b。
有两种方法:
1. 先令 r = a % b,然后如果 r < 0 再进行修正:
r = a % b;
if (r < 0) r += b;
2. 直接使用语句:
r = (a%b+b)%b;
这样就保证了 r >= 0,缺点是要执行两次取余运算,效率会打点折扣。