在0≤a,b≤2限制下,如何将b != (j%3+a)%2变形为a单独在一侧?
问题解答
现有语句b != (j % 3 + a ) % 2,在0 ≤ a,b ≤ 2的限制条件下,无法改写成a != .....的单一形式,具体分析如下:
首先,(j%3 +a)%2的结果只能是0或1,结合b的取值(0、1、2),分情况拆解原表达式:
- 当
b=2时,原表达式恒成立(因为0、1都不等于2),此时式子与a的取值无关,不需要对a做任何限制。 - 当
b=0时,原表达式等价于(j%3 +a) %2 ≠ 0,即j%3 +a为奇数:- 若
j%3是偶数(即j%3=0或2),则a必须是奇数(仅a=1),对应限制为a≠0 且 a≠2; - 若
j%3是奇数(即j%3=1),则a必须是偶数(a=0或2),对应限制为a≠1。
- 若
- 当
b=1时,原表达式等价于(j%3 +a) %2 ≠1,即j%3 +a为偶数:- 若
j%3是偶数(0或2),则a必须是偶数(0或2),对应限制为a≠1; - 若
j%3是奇数(1),则a必须是奇数(1),对应限制为a≠0 且 a≠2。
- 若
可见,不同场景下a的限制条件并不统一:有的是排除单个值,有的是排除两个值,无法用a != [单一表达式]的形式来覆盖所有情况。
内容的提问来源于stack exchange,提问作者TTho Einthausend
相关产品推荐
相关产品推荐

