题目来自牛客网

完美解法

博弈论

kiki和bob玩石头

题目:

kiki和cbob在玩一个游戏,他们收集了一些石子,约定两人轮流从这些石子中取出一部分,但是每次只能取1、2或3颗石子,kiki和bob都非常聪明,他们总是按照最有利于自己的方式进行游戏,请你预测最后谁会赢得游戏,如果先手胜利输出kiki,否则输出bob。(最后一个拿到1~3个石子的获胜)

输入描述

输入一个整数n(1<=n<=10^9)代表一共有多少颗石子。

输出描述

如果先手胜利输出kiki,否则输出bob。

示例

输入:10
输出:kiki

输入:8
输出:bob

思路

1~3个石子,胜者绝对是kiki
4个石子,胜者绝对是bob.
所以可以将所有数拆成4的倍数和余数.
余数不为0(即余数为1~3),则kiki胜.
余数为0,则bob胜.(思路来自强大的学长)

#include <iostream>
using namespace std;
int main()
{
    int x;
    cin >> x;
    if(x % 4 == 0)
        cout << "bob";
    else
        cout << "kiki";
    return 0;
}
上一篇:ZZULI 1046: 奇数的乘积


下一篇:哈尔滨理工大学21级新生程序设计竞赛(同步赛)错题笔记