https://ac.nowcoder.com/acm/contest/301/I
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小乐乐和小皮蛋开始学习关于博弈的知识。
给定两堆石子,第一堆有n个石子,第二堆有m个石子。
每次操作可以从一堆石子中拿走一些石子,拿走石子的数量可以是1 - k个,小乐乐先手拿石子,然后依次轮流。
假如到小乐乐的轮次,小乐乐拿不了了(也就是所有的石子都被拿光了),那么小皮蛋就获胜,反之亦然。
假设小乐乐和小皮蛋都绝顶聪明,都会采用最佳的策略,请问最后谁会赢。
输入描述:
多组数据输入,对于每一组数据,只有一行由空格分开的三个整数n, m, k(0 <= n, m <= 1000000000, k >= |n - m|).
输出描述:
如果小乐乐会赢,输出"HAI YOU SEI!",否则输出"LAOZI CHUI SI NI!"。
输入
130 135 5
输出
HAI YOU SEI!
说明
小乐乐会赢
解题思路
这一题跟k好像没有关系,谁只要面对两堆相等的情况,谁就会输。因为只要这一个人取多少,另一个人就会在另外一堆取同样的个数,故此人一定会输。所以只要判断m和n是否相等就行了,如果不相等,因为k>=|n-m|,所以只要小乐乐取一些石子使其变为相等的,那么小乐乐就赢了,反之,就输了。
#include <iostream>
using namespace std;
int main()
{
long long m, n, k;
while (~scanf("%lld%lld%lld", &n, &m, &k))
{
if (n != m)
puts("HAI YOU SEI!");
else puts("LAOZI CHUI SI NI!");
}
return 0;
}