完美解法
博弈论
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; }