約1時間30分間気付かなかったミス
数を長さNで循環シフトさせて、その後の偶奇を知りたかった。
if((x - shift + N) % N % 2 == 0) ...
としなければいけないところを
if((x - shift) % 2 == 0) ...
とかしていた。
当たり前だが、((x mod m) mod n = x mod n)は一般には成り立たない。
例えば((9 mod 3) mod 2) = 0 だが、(9 mod 2) = 1。
今回の場合、1回考えて書き直したらこのバグは直っていたかもしれない。
書きなおすことも考えよう。