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; }
时间: 2024-10-07 17:29:05