玄关,感觉等价的两份代码一份WA了
查看原帖
玄关,感觉等价的两份代码一份WA了
174477
sdyzpf楼主2023/12/29 20:28
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans,a=0,b=-1;
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        int x;
        string s;
        cin>>s>>x;
        if(s[0]=='A') a&=x,b&=x;
        if(s[0]=='X') a^=x,b^=x;
        if(s[0]=='O') a|=x,b|=x;
    }
    for(int i=29;i>=0;i--){
        if((a>>i)&1) ans+=1<<i;
        else if(((b>>i)&1) and ans+(1<<i)<=m) ans+=1<<i;
    }
    cout<<ans;
    return 0;
}

这种写法WA了三个点

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans,a=0,b=-1;
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        int x;
        string s;
        cin>>s>>x;
        if(s[0]=='A') a&=x,b&=x;
        if(s[0]=='X') a^=x,b^=x;
        if(s[0]=='O') a|=x,b|=x;
    }
    for(int i=29;i>=0;i--){
        if((a>>i)&1) ans+=1<<i;
        else if(((b>>i)&1) and (1<<i)<=m) ans+=1<<i,m-=1<<i;
    }
    cout<<ans;
    return 0;
}

换成兔队题解的写法就A了,不理解为什么第一种写法寄了。

2023/12/29 20:28
加载中...