使用C++查询给定数组在索引范围内的按位或操作
在本文中,我们给出了一个整数数组。我们的任务是找到给定范围内所有数字的按位或,例如,
Input: arr[] = {1, 3, 1, 2, 3, 4}, q[] = {{0, 1}, {3, 5}} Output: 3 7 1 OR 3 = 3 2 OR 3 OR 4 = 7 Input: arr[] = {1, 2, 3, 4, 5}, q[] = {{0, 4}, {1, 3}} Output: 7 7登录后复制
暴力方法
在这种方法中,我们只需遍历每个范围并计算按位或该范围内的所有数字并打印我们的答案。
示例
#include using namespace std; int main() { int arr[] = { 7, 5, 3, 5, 2, 3 }; int n = sizeof(arr) / sizeof(int); // size of our array int queries[][2] = { { 1, 3 }, { 4, 5 } }; // given queries int q = sizeof(queries) / sizeof(queries[0]); // number of queries for(int i = 0; i < q; i++) { // traversing through all the queries long ans = 0; for(int j = queries[i][0]; j j) & 1); for (int i = 1; i < n; i++) { prefixbits[j][i] = arr[i] & (1LL