B

最大的数是偶数时,除了它本身都可以赢,最大的数是奇数时,只有它本身可以赢,全都一样时,也要分情况,偶数全输,奇数全赢

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    for(int j=0;j<t;j++){
        int n;
        cin>>n;
        vector<long long> a(n+5);
        long long maxi=0;
        int num=0;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            maxi=max(maxi,a[i]);
        }
        for(int i=1;i<=n;i++){
            if(a[i]==maxi){
                num++;
            }
        }
        if(num==n){
            for(int i=1;i<=n;i++){
                cout<<'0';
            }
            cout<<'\n';
            continue;
        }
        if(num%2==0){
            for(int i=1;i<=n;i++){
                if(a[i]!=maxi){
                    cout<<'1';
                }else{
                    cout<<'0';
                }
            }
        }else{
            for(int i=1;i<=n;i++){
                if(a[i]==maxi){
                    cout<<'1';
                }else{
                    cout<<'0';
                }
            }
        }
        cout<<'\n';
    }
    return 0;
}

I

只有0或1的数量>=2时,才能形成回文数

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    for(int k=0;k<t;k++){
        int n,m;
        cin>>n>>m;
        vector<vector<char>> a(n+1,vector<char>(m+1));
        int zero=0;
        int one=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>a[i][j];
                if(a[i][j]=='0'){
                    zero++;
                }else{
                    one++;
                }
            }
        }
        if(zero>1&&one>1){
            for(int i=1;i<=n;i++){
                    for(int j=1;j<=m;j++){
                cout<<"Y";
        }
        cout<<'\n';
        }
    }else if(zero<=1&&one>1){
            for(int i=1;i<=n;i++){
                    for(int j=1;j<=m;j++){
                        if(a[i][j]=='1'){
                            cout<<"Y";
                        }else{
                            cout<<"N";
                        }
        }
        cout<<'\n';
        }
        }else if(one<=1&&zero>1){
            for(int i=1;i<=n;i++){
                    for(int j=1;j<=m;j++){
                        if(a[i][j]=='0'){
                            cout<<"Y";
                        }else{
                            cout<<"N";
                        }
        }
        cout<<'\n';
        }
        }
}
    return 0;
}

F

想异或运算最小,只要二进制只相差一位即可

#include<bits/stdc++.h>
using namespace std;
const long long ky=1LL<<31;
const long long kx=ky+1;
int main(){
    int t;
    cin>>t;
    for(int j=0;j<t;j++){
        int n;
        cin>>n;
        cout<<n*ky<<" "<<n*kx<<endl;
    }
    return 0;
}

E

画图找规律即可

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            int cnt=min(i,j);
            if(cnt&1){
                cout<<0;
            }else{
                cout<<1;
            }
        }
        cout<<endl;
    }
    return 0;
}