这题写的很恶心,我的代码风格太差了……在POJ上提交的时候是9000多B……罪过
我没有用到位运算。
有4种按钮,第1种全变,第2种2K+1,第3种2k,第4种3*k+1.
共2^4种,由于摁两种相当于没摁,所以列出所有的8种状态
灯灭为0,亮为1:
最终状态 灯灭的位置 摁按钮次数
0000000000000000…… all 1or2
0011100011100010…… 2or3
0101010101010101…… 2k+1 1or2
0110110110110110…… 3k+1 1or4
1001001001001001…… 3k&&3k-1 2or3
1010101010101010…… 2k 1or2
1100011100011100…… 2or3
1111111111111111…… none 0or2or3
当摁按钮次数c>=5时,奇数可以转化成1或3,偶数可以转化成2或4.
参考上面的摁按钮次数,可知c>=5时8种状态都可以达到。
根据c的值取上述中符合条件的状态,再加上附加的灯亮和灯灭的条件就可以得到解。