题解 | #新春游戏之数学系列#
新春游戏之数学系列
https://ac.nowcoder.com/acm/contest/73955/A
简单博弈
首先如果n是偶数,那么第一个人干什么,第二个人可以跟着干什么,第一个人必输
齐次当n是奇数,那么如果第一个人能一次把其中一个红包拆到不可再拆的状态,就必胜了。
这时判断k是否为1,如果不是,则判断m的最大因数是否超过k即可
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+7,M=1e6;
const int p=998244353;
const double eps=1e-9,pi=acos(-1.0);
int tt;
int n,m,cnt=0,id=1,num=0,len=200000;
int k;
void solve(){
scanf("%d%d%d",&n,&m,&k);
if(n%2==0){
puts("Bong");
return;
}
int tmp=0;
for(int i=2;i*i<=m;i++){
if(m%i==0){
tmp=i;
break;
}
}
if(k==1){
puts("Bing");
return;
}
if(tmp==0){
puts("Bong");
return;
}
if(m/tmp>=k)puts("Bing");
else puts("Bong");
}
signed main(){
tt=1;
while(tt--){
solve();
}
return 0;
}
查看14道真题和解析