中文题意刘汝佳紫书上有,这里从略
这种题属于构造题,所谓构造题,就是存在一种正解方法能对付所有情况,只需要找到这个正解方法便能AC。
对于这题,先想简单的情况,假设c=0,也就是你只能跳1格和跳2格,这种时候有什么办法能对于任何数据都能够完成任务呢。不难想到这样一种方法,假如a=1,b=x的时候,我可以一直向右跳2格,跳到尽头后根据x的奇偶性来决定向左还是向右跳1格,然后一直向左跳2格。对于a>1的情况可以先跳1格一直跳到只剩1个的时候在进行前面的方法。其实这种方法用到了一个性质,0,2,4...这些偶数在模2的情况下都是一个同余类,1,3,5...这些是另一个同余类,而每次跳2格只能在自己的同余类里跳来跳去,只有跳1格的时候才能改变成另外的同余类。
那么加入跳3格这种情况的时候,问题变的复杂了些。但是假如我们能找到这么一个方法,使得把3全部用完,而且在当前位置的左边的所有位置都走过,右边所有位置都没走过,那么就能转换成前面只有1格和2格的情况了。利用同余类的性质,我们可以这样思考:在模3的情况下一共有3种同余类,而只有1和2能改变当前同余类,假设现在c%3==0,那么我可以先向右走c/3个3格,然后右跳1格到另一个同余类,向左走c/3个3格,再右跳1格到最后一个同余类,向右走c/3格,这样我就能用掉所有的3格同时也把当前位置的左边全部走