TheNumberGame

作者:欧阳思琦

关键词:子串 字符串匹配

题目简述

Manao 有一个整数,他的朋友有一个整数都是进制数)。他们发明了一个游戏,两个人轮流操作,每个人每轮可以将他的数翻转或者除以向下取整。如果不超过次操作(Manao的次+朋友的次)后两个数相等了,那么Manao赢,否则Manao输。

给你,假设两个玩家都是采取最佳策略进行游戏,问Manao最后会赢还是会输。

算法

先给出结论:只要或者的翻转(记为)是的一个子串,那么Manao赢,否则Manao输。

证明的话也很简单,因为通过这两个操作(相当与只能在两边删除字符),能构成的只有的子串或者子串的翻转。具体操作方法就是根据当前的状态翻转删除,保持的子串即可(可以将看成任意字符串的子串),因为字符串的长度只有如果不变短就必定会有一个时刻,在步以内总是能够决出胜负的。

因为字符串长度很短,暴力或者KMP都是可以的。

results matching ""

    No results matching ""