Sum of bitwise OR of all subarrays

Give an array of positive integers, find the total sum after performing the bit wise OR operation on all the sub arrays of a given array.

Examples:

Input : 1 2 3 4 5
Output : 71

Input : 6 5 4 3 2
Output : 84



First initialize the two variable sum=0, sum1=0, variable sum will store the total sum and, with sum1 we will perform bitwise OR operation for each jth element, and add sum1 with sum.
1:- Traverse the from 0th position to n-1.
2:- For each ith variable we will perform bit wise OR operation on all the sub arrays to find the total sum.
Repeat step until the whole array is traverse.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find sum of 
// bitwise ors of all subarrays.
#include <iostream>
using namespace std;
  
int totalSum(int a[], int n)
{
    int i, sum = 0, sum1 = 0, j;
  
    for (i = 0; i < n; i++)
    {
  
        sum1 = 0;
  
        // perform Bitwise OR operation
        // on all the subarray present 
        // in array
        for (j = i; j < n; j++) 
        {
  
            // OR operation
            sum1 = (sum1 | a[j]);
  
            // now add the sum after performing 
            // the Bitwise OR operation
            sum = sum + sum1;
        }
    }
  
    return sum;
}
  
// Driver code
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << totalSum(a, n) << endl;
    return 0;
}
  
// This code is contributed
// by Shivi_Aggarwal

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to find sum of bitwise ors
// of all subarrays.
#include <stdio.h>
  
int totalSum(int a[], int n)
{
    int i, sum = 0, sum1 = 0, j;
  
    for (i = 0; i < n; i++) {
  
        sum1 = 0;
  
        // perform Bitwise OR operation
        // on all the subarray present in array
        for (j = i; j < n; j++) {
  
            // OR operation
            sum1 = (sum1 | a[j]);
  
            // now add the sum after performing the
            // Bitwise OR operation
            sum = sum + sum1;
        }
    }
  
    return sum;
}
  
// Driver code
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    int n = sizeof(a)/sizeof(a[0]);
    printf("%d ", totalSum(a, n));
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find sum 
// of bitwise ors of all subarrays.
import java.util.*;
import java.lang.*;
import java.io.*;
  
class GFG
{
static int totalSum(int a[], int n)
{
    int i, sum = 0, sum1 = 0, j;
  
    for (i = 0; i < n; i++) 
    {
        sum1 = 0;
  
        // perform Bitwise OR operation
        // on all the subarray present 
        // in array
        for (j = i; j < n; j++) 
        {
  
            // OR operation
            sum1 = (sum1 | a[j]);
  
            // now add the sum after 
            // performing the Bitwise
            // OR operation
            sum = sum + sum1;
        }
    }
  
    return sum;
}
  
// Driver code
public static void main(String args[])
{
    int a[] = { 1, 2, 3, 4, 5 };
    int n = a.length;
    System.out.println(totalSum(a,n));
}
}
  
// This code is contributed 
// by Subhadeep

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find sum of
# bitwise ors of all subarrays.
def totalSum(a, n):
    sum = 0;
    for i in range(n):
        sum1 = 0;
          
        # perform Bitwise OR operation
        # on all the subarray present
        # in array
        for j in range(i, n):
              
            # OR operation
            sum1 = (sum1 | a[j]);
              
            # now add the sum after
            # performing the
            # Bitwise OR operation
            sum = sum + sum1;
    return sum;
  
# Driver code
a = [1, 2, 3, 4, 5];
n = len(a);
print(totalSum(a, n));
  
# This code is contributed by mits

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find sum 
// of bitwise ors of all 
// subarrays.
using System;
  
class GFG
{
static int totalSum(int[] a, int n)
{
    int sum = 0;
    for(int i = 0; i < n; i++) 
    {
        int sum1 = 0;
  
        // perform Bitwise OR operation
        // on all the subarray present 
        // in array
        for (int j = i; j < n; j++) 
        {
  
            // OR operation
            sum1 = (sum1 | a[j]);
  
            // now add the sum after 
            // performing the Bitwise
            // OR operation
            sum = sum + sum1;
        }
    }
  
    return sum;
}
  
// Driver code
static void Main()
{
    int[] a = { 1, 2, 3, 4, 5 };
    int n = a.Length;
    Console.WriteLine(totalSum(a,n));
}
}
  
// This code is contributed 
// by mits

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find
// sum of bitwise ors
// of all subarrays.
function totalSum($a,$n)
{
$sum = 0;
for ($i = 0; $i < $n; $i++)
{
    $sum1 = 0;
  
    // perform Bitwise OR operation
    // on all the subarray present 
    // in array
    for ($j = $i; $j < $n; $j++) 
    {
  
        // OR operation
        $sum1 = ($sum1 | $a[$j]);
  
        // now add the sum after
        // performing the
        // Bitwise OR operation
        $sum = $sum + $sum1;
    }
}
return $sum;
}
  
// Driver code
$a = array(1, 2, 3, 4, 5);
$n = sizeof($a);
echo totalSum($a, $n);
  
// This code is contributed by mits
?>

chevron_right


Output:

71


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.





Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.