B-至至子的按位与_牛客小白月赛55 (nowcoder.com)
位运算我不会 对我来说是难点了(感觉怎么学都学不会...)
只能遇到一题补一题了
题意是给你a和b 找到最大的c满足条件a&c==b&c;
那这样要想保证c最大,那就是ab的每一位是1的时候c取1,ab每一位是0的时候c也取1就可以了
具体怎么取:
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#include<iostream>
#include<map>
#include<set>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
using namespace std;
typedef long long ll;
typedef pair<int,int> PAII;
const int N=2e6+10,M=5050,INF=0x3f3f3f3f,mod=998244353;
int read()
{
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int p[N];
bool st[N];
char ch[N],s[N];
int main(){
IOS;
int T;
T=1;
//cin>>T;
while(T--)
{
ll a,b;
cin>>a>>b;
ll c=0ll;
for(int i=62;i>=0;i--)
{
ll x=a>>i&1;
ll y=b>>i&1;
if(x==y) c|=(1ll<<i);
}
cout<<c;
}
return 0;
}
/*
*/