比赛 |
位运算及及其应用题单 |
评测结果 |
WWWWAAWWWW |
题目名称 |
调试LED灯 |
最终得分 |
20 |
用户昵称 |
zqy |
运行时间 |
0.172 s |
代码语言 |
C++ |
内存使用 |
4.48 MiB |
提交时间 |
2025-01-25 11:20:12 |
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int N=5e6+10;
long long x,a,b,l[20];
int n,m;
char s[N],op[35];
int count(int x){
int cnt=0;
for(int i=0;i<n;i++)if((x>>i)&1)cnt++;
return cnt;
}
int main(){
freopen("testled.in","r",stdin);
freopen("testled.out","w",stdout);
scanf("%d",&n);
scanf("%s",op);
for(int i=n-1;i>=0;i--){
if(op[n-1-i]=='1')x|=(1<<i);
}
for(int i=0;i<n;i++){
if(i&1)b|=(1<<i);
else a|=(1<<i);
}
for(int i=0;i<=n;i++)l[i]=(1<<n)-1,l[i]=(l[i]>>i);
scanf("%d",&m);
scanf("%s",s+1);
for(int i=1,j;i<=m;i++){
if(s[i]=='a'){
x|=((1<<n)-1);
}else if(s[i]=='b'){
x&=0;
}else if(s[i]=='c'){
x^=((1<<n)-1);
}else if(s[i]=='1'){
x^=a;
}else if(s[i]=='2'){
x^=b;
}else if(s[i]>='3'&&s[i]<='9'){
j=s[i]-'0';
x|=l[n-j];
x&=l[j];
}
}
for(int i=n-1;i>=0;i--){
if((x>>i)&1)printf("1");
else printf("0");
}
printf("\n%d\n",count(x));
return 0;
}