【CSU-2056】解题报告(思维,KMP,去0)
原始题目
2056: a simple game
- Time Limit: 1 Sec
- Memory Limit: 128 Mb
- Submitted: 412
- Solved: 73
Description
这一天,小A和小B在玩一个游戏,他俩每人都有一个整数,然后两人轮流对他们的整数进行操作,每次在下列两个操作任选一个:
(1)对整数进行翻转,如1234翻转成4321 ,1200翻转成21
(2)将整数除以10,如1234/10=123,1/10=0
当操作过程中出现a==b时,则小A就赢了,而操作一直进行下去或不能使a==b则算小B赢。
现在小A求助于你,想让你帮他在知道两人的整数时小A能不能赢,假设每次都是小A先手,并且两人都是采取最优策略
Input
首先输入$ T (T 100)\(,表示有T组数据,然后接下来有\)T\(行,每行有两个整数\)a,b ( 0 a,b < 10100000)$。
Output
有\(T\)行,当小A赢了则输出"Yes",否则输出"No"
Sample Input
4
1234 123
123 321
1234 12345
123 123
Sample Output
Yes
Yes
No
Yes
Hint
Source
Author
wsf
题目大意
如题 # 解题思路 - 如果将A,B的整数看作字符串,那两种操作就是反转,去尾。 - 两人都采取最优策略,考虑小A什么时候输,即B可以无限翻转而A永远不能将自己的串通过两种操作达到B字符串的状态。 - 那么当B的串或B反转后的串是A的子串时,A就是必赢的 - 考虑一些特殊情况。 - 由于末尾0的存在会在反转中自动去掉,所以要提前预处理一下,把末尾0去掉 - 正方各一次KMP即可。
解题代码
1 |
|
收获与反思
- 思维+KMP
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!