WA on #2
查看原帖
WA on #2
373198
WhileTrueRP楼主2023/10/7 10:10
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int N = 1e5+5;
int a[N][3];
int n,m;
int calc(int a,int op,int b){
	if(op == 1){
		return a|b;
	}else if(op == 2){
		return a^b;
	}else if(op == 3){
		return a&b;
	}
}
int f(int t){
	int ans = t;
	for(int i=1;i<=n;i++){
		ans = calc(ans,a[i][1],a[i][2]);
	}
	return ans;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		char s[10];
		scanf("%s%d",&s,&a[i][2]);
		if(s[0] == 'O'){
			a[i][1] = 1;
		}else if(s[0] == 'X'){
			a[i][1] = 2;
		}else if(s[0] == 'A'){
			a[i][1] = 3;
		}
	}
	int ans = 0;
	for(int i = log2(m)+1;i>=0;i--){
		if(ans + (1<<i) <= m && (f(1<<i) & (1<<i))){
			ans += (1<<i);
		}
	}
	printf("%d",f(ans));
}
2023/10/7 10:10
加载中...