2021.1.27个人赛补提报告
比赛总结:本次比赛成绩不太理想,原因:1.距离上次系统刷题有较长时间,没有做题状态,没有发挥出正常水平2.家里的猫一定程度上干扰了了我的比赛(次要原因)3.自己本来就菜。
反思:1.对待题目要真正连根拔起,通过比赛把题目涉及的知识点都搞清楚,要系统一点。2.多刷题保持思维敏捷。
c题:C题做不出来对于我来说正常,因为遇到了知识薄弱地带。
本题考查了位运算。我为此补习了一下位运算相关知识。题意就是让你根据他给出的操作步骤化简到不超过5步。
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int x=1023,y=0;
for(int i=0;i<n;i++)
{
char s[15];
int d;
scanf("%s%d",s,&d);
if(s[0]=='|')
{
x=x|d,y=y|d;
}
else if(s[0]=='&')
{
x=x&d,y=y&d;
}
else x=x^d,y=y^d;
}
int a,b,c;a=-1,b=-1,c=-1;
for(int i=0;i<10;i++)
{
int xx=x&(1<<i);
int yy=y&(1<<i);
if(xx>0&&yy>0)
{
if(a==-1)a=1<<i;
else a+=1<<i;
}
if(xx==0&&yy==0)
{
if(a==-1)a=1<<i;
else a=a|(1<<i);
if(b==-1)b=1<<i;
else b=b|(1<<i);
}
if(xx==0&&yy>0)
{
if(b==-1)b=1<<i;
else b=b|(1<<i);
}
}
int cont=0;
if(a!=-1)cont++;
if(b!=-1)cont++;
if(c!=-1)cont++;
printf("%d\n",cont);
if(a!=-1)printf("| %d\n",a);
if(b!=-1)printf("^ %d\n",b);
if(c!=-1)printf("& %d\n",c);
}
}
浙公网安备 33010602011771号