题解 | I-zoahhhh和Arrow大决斗
思路讲解
输入两个数据,n为总的星球杯数量,m为最大每个人可以拿走的星球杯数量,但是每局不一定就是必须要拿m个,只要是1~m的范围内就行,假设两个人都是会玩这个游戏的,都会选择最优策略,那么这两个人每一轮(就是各拿一次)拿走的星球杯总数应为m+1个
情况1 为什么是m+1个呢,我们先来看总数n是m+1的倍数的情况,那么每轮在zoahhhh拿走k个星球杯之后,那么每轮在m+1个星球杯中总是剩余1~m个星球杯,聪明的Arrow总是可以利用自己的后手优势拿走剩下所有的星球杯保证每轮拿走的星球杯数是m+1个,那么维持到最后一轮,就是Arrow获胜
情况2 如果总数n不是m+1的倍数的情况,那么多出来的星球杯一定是1~m内的,那么聪明的zoahhhh就可以在第一次拿的时候拿走多出来的星球杯,然后一转攻势,轮到Arrow变为先手,zoahhhh后手,回到情况1,zoahhhh获胜
代码实现
很简单的
#include <stdio.h>
int main(){
long long n, m;
scanf("%lld %lld",&n,&m);
if (n%(m+1)==0) {
printf("Arrow\n");
}else{
printf("zoahhhh\n");
}
return 0;
}