A-1-2-4 Test (Atcoder Beginner Contest 270) 含位运算解释

一、题目描述

 二、题意翻译

  三、思路

看过题解说是用位运算的思路去写代码,因为平常使用位运算的次数比较少所以这里稍微介绍下按位或(   |   ),以及为什么这道题可以使用按位或操作求得答案。

  四、按位或 (   |   )

也就是把两个数字按二进制摆放好之后,看相应位置上有没有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,假期愉快。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值