【位运算】【codeforces】631A Interview
http://codeforces.com/problemset/problem/631/A
给出两组一样长的数组A0~n-1 B0~n-1 求A中连续元素 按位或(or)的最大值与 B中连续元素 按位或(or)的最大值的和
或运算的话遇到一个新的数只増或不变,不会减,所以直接把所有数按位或,之后求和即可
#include<bits/stdc++.h> using namespace std; int n; vector<int> a; vector<int> b; int main(){ while(~scanf("%d", &n)){ a.clear(); b.clear(); for(int i = 0; i < n; i++){ int temp; scanf("%d", &temp); a.push_back(temp); } for(int i = 0; i < n; i++){ int temp; scanf("%d", &temp); b.push_back(temp); } vector<int>::iterator it; int ans1 = 0; for(it = a.begin(); it != a.end(); it++){ ans1 = ans1|(*it); } int ans2 = 0; for(it = b.begin(); it != b.end(); it++){ ans2 = ans2|(*it); } int ans = ans1+ans2; printf("%d\n", ans); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步