一、题目描述
二、题意翻译
三、思路
看过题解说是用位运算的思路去写代码,因为平常使用位运算的次数比较少所以这里稍微介绍下按位或( | ),以及为什么这道题可以使用按位或操作求得答案。
四、按位或 ( | )
也就是把两个数字按二进制摆放好之后,看相应位置上有没有1,如果有那么答案数字的二进制上的这一位就是1,反之,如果两个数的这一位上都没有1,那么答案数字的二进制的这一位数就没有1。也就是(按位)和(或) 。
五、联系原题
那么原题为什么能够使用按位或来进行操作呢?
我们看到
哈哈哈,字写错了(参加)改成(写出),(分数)改成(题目),字丑将就下,please (´▽`)ノ
六、代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c = a|b;
cout<<c;
return 0;
}
hhh,为什么想写这次文章嘞,因为我这次为了写这个题闹了个大笑话(在我看来,hhhh)。
如下,我写的一大串啊,不如别人两行┏((= ̄㉨ ̄=))┛ 。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a1[7];
int b1[7];
int main()
{
int a,b;
cin>>a>>b;
if(a==b)
{
cout<<a;
return 0;
}
if(a==1||a==2||a==4) a1[a]++;
else if(a==3) a1[1]++,a1[2]++;
else if(a==5) a1[1]++,a1[4]++;
else if(a==6) a1[2]++,a1[4]++;
else if(a==7) a1[1]++,a1[2]++,a1[4]++;
else a1[0]++;
if(b==1||b==2||b==4) b1[b]++;
else if(b==3) b1[1]++,b1[2]++;
else if(b==5) b1[1]++,b1[4]++;
else if(b==6) b1[2]++,b1[4]++;
else if(b==7) b1[1]++,b1[2]++,b1[4]++;
else b1[0]++;
int res=0;
for(int i=1;i<=4;i++)
{
if(a1[i]==1||b1[i]==1)
res+=i;
}
cout<<res;
return 0;
}
完结over,题解部分是我参考其他佬想出来的over,假期愉快。