每个元素x自身x次异或后的数组元素之和

给定一个整数数组,任务是在对每个元素x进行x次异或运算后,计算所有数组元素的和。例如,如果元素是4,那么我们对这个数字进行4次异或,比如:=4^4^4^4 例如:

null
Input :  arr[] = { 1, 2, 3, 5 }Output :  9 explanation:  1 + 2^2 + 3^3^3 + 5^5^5^5^5 : 9                     Input :   arr[] ={ 5, 6, 7, 9 }Output :  21

A. 简单解决方案 就是一个接一个地选取每个数组元素,并根据其值对其自身进行异或运算。最后将XOR值添加到结果中。 下面是上述想法的实现。

C++

// C++ program to compute sum of all element after
// doing Xor with itself ( element_time)
#include <bits/stdc++.h>
using namespace std;
// function return sum of all XOR element of array
int XorSum( int arr[], int n)
{
// store result
int result = 0;
// Traverse array element and apply XOR
// operation on it
for ( int i = 0; i < n; i++) {
// XOR of current element with itself
// according to value.
int k = 0;
for ( int j = 1; j <= arr[i]; j++)
k ^= arr[i];
result += k;
}
return result;
}
// Driver program
int main()
{
int arr[] = { 1, 2, 6, 3, 4, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << XorSum(arr, n) << endl;
return 0;
}


JAVA

// Java program to compute sum of all
// element after doing Xor with itself
// ( element_time)
import java.io.*;
class GFG {
// function return sum of all XOR
// element of array
static int XorSum( int arr[], int n)
{
// store result
int result = 0 ;
// Traverse array element and apply
// XOR operation on it
for ( int i = 0 ; i < n; i++) {
// XOR of current element with
// itself according to value.
int k = 0 ;
for ( int j = 1 ; j <= arr[i]; j++)
k ^= arr[i];
result += k;
}
return result;
}
// Driver program
public static void main(String args[])
{
int arr[] = { 1 , 2 , 6 , 3 , 4 , 5 };
int n = arr.length;
System.out.println(XorSum(arr, n));
}
}
/*This code is contributed by Nikita Tiwari.*/


python

# Python 3 program to compute sum of
# all element after doing Xor with
# itself ( element_time)
# function return sum of all XOR
# element of array
def XorSum(arr, n) :
# store result
result = 0
# Traverse array element and
# apply XOR operation on it
for i in range ( 0 , n) :
# XOR of current element
# with itself according to
# value.
k = 0
for j in range ( 1 , arr[i] + 1 ) :
k = k ^ arr[i]
result = result + k
return result
# Driver program
arr = [ 1 , 2 , 6 , 3 , 4 , 5 ]
n = len (arr)
print (XorSum(arr, n))
# This code is contributed by Nikita Tiwari.


C#

// C# program to compute sum of all
// element after doing Xor with itself
// ( element_time)
using System;
class GFG {
// function return sum of all XOR
// element of array
static int XorSum( int []arr, int n)
{
// store result
int result = 0;
// Traverse array element and apply
// XOR operation on it
for ( int i = 0; i < n; i++) {
// XOR of current element with
// itself according to value.
int k = 0;
for ( int j = 1; j <= arr[i]; j++)
k ^= arr[i];
result += k;
}
return result;
}
// Driver program
public static void Main()
{
int []arr = { 1, 2, 6, 3, 4, 5 };
int n = arr.Length;
Console.WriteLine(XorSum(arr, n));
}
}
// This code is contributed by vt_m.


PHP

<?php
// PHP program to compute
// sum of all element after
// doing Xor with itself
// ( element_time)
// function return sum of all
// XOR element of array
function XorSum( $arr , $n )
{
// store result
$result = 0;
// Traverse array element
// and apply XOR
// operation on it
for ( $i = 0; $i < $n ; $i ++)
{
// XOR of current element
// with itself according
// to value.
$k = 0;
for ( $j = 1; $j <= $arr [ $i ]; $j ++)
$k ^= $arr [ $i ];
$result += $k ;
}
return $result ;
}
// Driver Code
$arr = array (1, 2, 6, 3, 4, 5);
$n = count ( $arr );
echo XorSum( $arr , $n );
// This code is contributed by anuj_67.
?>


Javascript

<script>
// Javascript program to compute sum of all element after
// doing Xor with itself ( element_time)
// function return sum of all XOR element of array
function XorSum(arr, n)
{
// store result
let result = 0;
// Traverse array element and apply XOR
// operation on it
for (let i = 0; i < n; i++) {
// XOR of current element with itself
// according to value.
let k = 0;
for (let j = 1; j <= arr[i]; j++)
k ^= arr[i];
result += k;
}
return result;
}
// Driver program
let arr = [ 1, 2, 6, 3, 4, 5 ];
let n = arr.length;
document.write(XorSum(arr, n));
</script>


输出:

9

时间复杂度:O(n*m)(这里m是数组中的最大元素) 辅助空间:O(1) 有效解决方案 这个问题的基本原理是,如果我们对任何数字进行异或运算(偶数次),它会产生0,如果我们对奇数进行异或运算,它会产生相同的数。 例如

   let number be  : 3  do XOR with itself 3 time             3^3^3 = 3    let number be :  4 do XOR with itself 4 time              4^4^4^4 = 0   so if number is odd it's mean output is number   itself. Else zero  

以下是上述理念的实施:

C++

// C++ program to compute sum of all element after
// doing XOR with itself ( element_time)
#include <bits/stdc++.h>
using namespace std;
// function return sum of all XOR element of array
int XorSum( int arr[], int n)
{
int result = 0;
for ( int i = 0; i < n; i++) {
// if number is odd then add it to the
// result else not
if (arr[i] % 2 != 0)
result += arr[i];
}
return result;
}
// Driver program
int main()
{
int arr[] = { 1, 2, 6, 3, 4, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << XorSum(arr, n) << endl;
return 0;
}


JAVA

// Java program to compute sum of
// all element after doing XOR
// with itself ( element_time)
class GFG {
// function return sum of all
// XOR element of array
static int XorSum( int arr[], int n) {
int result = 0 ;
for ( int i = 0 ; i < n; i++) {
// if number is odd then add it to the
// result else not
if (arr[i] % 2 != 0 )
result += arr[i];
}
return result;
}
// Driver code
public static void main(String[] args)
{
int arr[] = { 1 , 2 , 6 , 3 , 4 , 5 };
int n = arr.length;
System.out.println(XorSum(arr, n));
}
}
// This code is contributed by Anant Agarwal.


Python3

# Python program to compute
# sum of all element after
# doing XOR with itself
# ( element_time)
# function return sum of
# all XOR element of array
def XorSum(arr,n):
result = 0
for i in range (n):
# if number is odd then add it to the
# result else not
if (arr[i] % 2 ! = 0 ):
result + = arr[i]
return result
# Driver program
arr = [ 1 , 2 , 6 , 3 , 4 , 5 ]
n = len (arr)
print (XorSum(arr, n))
# This code is contributed
# by Anant Agarwal.


C#

// C# program to compute sum of
// all element after doing XOR
// with itself ( element_time)
using System;
class GFG {
// function return sum of all
// XOR element of array
static int XorSum( int []arr, int n)
{
int result = 0;
for ( int i = 0; i < n; i++) {
// if number is odd then add it to the
// result else not
if (arr[i] % 2 != 0)
result += arr[i];
}
return result;
}
// Driver code
public static void Main()
{
int []arr = {1, 2, 6, 3, 4, 5};
int n = arr.Length;
Console.WriteLine(XorSum(arr, n));
}
}
// This code is contributed by vt_m.


PHP

<?php
// PHP program to compute
// sum of all element after
// doing XOR with itself
// ( element_time)
// function return sum of
// all XOR element of array
function XorSum( $arr , $n )
{
$result = 0;
for ( $i = 0; $i < $n ; $i ++)
{
// if number is odd
// then add it to the
// result else not
if ( $arr [ $i ] % 2 != 0)
$result += $arr [ $i ];
}
return $result ;
}
// Driver Code
$arr = array (1, 2, 6, 3, 4, 5);
$n = count ( $arr );
echo XorSum( $arr , $n );
// This code is contributed by anuj_67.
?>


Javascript

<script>
// Javascript program to compute
// sum of all element after
// doing XOR with itself ( element_time)
// function return sum of all XOR element of array
function XorSum(arr, n)
{
let result = 0;
for (let i = 0; i < n; i++) {
// if number is odd then add it to the
// result else not
if (arr[i] % 2 != 0)
result += arr[i];
}
return result;
}
// Driver program
let arr = [ 1, 2, 6, 3, 4, 5 ];
let n = arr.length;
document.write(XorSum(arr, n));
</script>


输出:

9

时间复杂度:O(n) 辅助空间:O(1) 本文由 库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享