原题解链接:https://ac.nowcoder.com/discuss/157310
因为是一个偶数,不妨分类讨论:
1.一回合可以直接翻转所有硬币
很显然,答案
2.一回合不能直接翻转所有硬币,因为是偶数,所以只需要讨论的奇偶性。
(1)是奇数
某回合结束后所有硬币反面朝上可以等价于所有硬币都被翻转了奇数次。假设可以达成,那么该回合后所有回合总翻转次数一定要为奇数(因为奇数个奇数相加是奇数)然而m是偶数,即使在不使坏的情况下,无论翻转多少个回合,总翻转次数也一定是偶数,所以在这种情况下是不可能赢得游戏的。答案是No
(2)是偶数
同理,完成时所有硬币都一定要被翻转了奇数次,但是是偶数,所以总翻转次数一定要为偶数,在不被使坏的情况下,至少有可能完成,但是除去的情况外,只要在第一回合后立即被使坏,不管翻转哪一个硬币,都会使得总翻转次数由总是偶数变成总是奇数,和为奇数时原理相同,也不可能赢得游戏,答案是
结论: 时答案是,否则答案是
#include<bits/stdc++.h>
using namespace std;
void solve(){
int T,a=0,b=0;
cin>>T;
while(T--){
scanf("%d %d",&a,&b);
if(a<b||b%2!=0) printf(">>>");
if(a==b) printf("Yes\n");
else printf("No\n");
}
if(T!=-1) cout<<T<<endl;
}
int main(){
solve();
}