Encuentra la suma de la suma de todas las subsecuencias

Dada una array de n enteros. La tarea es encontrar la suma de cada subsecuencia de la array.

Ejemplos: 

Input : arr[] = { 6, 8, 5 }
Output : 76
All subsequence sum are:
{ 6 }, sum = 6
{ 8 }, sum = 8
{ 5 }, sum = 5
{ 6, 8 }, sum = 14
{ 6, 5 }, sum = 11
{ 8, 5 }, sum = 13
{ 6, 8, 5 }, sum = 19
Total sum = 76.

Input  : arr[] = {1, 2}
Output : 6

Método 1 (fuerza bruta):  
Genere toda la subsecuencia y encuentre la suma de cada subsecuencia.

Método 2 (enfoque eficiente): 
para una array de tamaño n, tenemos 2^n subsecuencias (incluidas las vacías) en total. Observe, en total 2 n subsecuencias, cada elemento ocurre 2 n-1 veces. 
Por ejemplo, arr[] = { 5, 6, 7 } 

Entonces, la suma de todas las subsecuencias será (suma de todos los elementos) * 2 n-1 .

A continuación se muestra la implementación de este enfoque: 
 

C++

// C++ program to find sum of all sub-sequences
// of an array.
#include<bits/stdc++.h>
using namespace std;
 
// Return sum of sum of all sub-sequence.
int sum(int arr[], int n)
{
  int ans = 0;
 
  // Finding sum of the array.
  for (int i = 0; i < n; i++)
    ans += arr[i];
 
  return ans * pow(2, n - 1);
}
 
// Driver Code
int main()
{
  int arr[] = { 6, 7, 8 };
  int n = sizeof(arr)/sizeof(arr[0]);
 
  cout << sum(arr, n) << endl;
 
  return 0;
}

Java

// Java program to find sum of
// all sub-sequences of an array.
import java.io.*;
import java.math.*;
 
class GFG {
     
    // Return sum of sum of all sub-sequence.
    static int sum(int arr[], int n)
    {
    int ans = 0;
     
    // Finding sum of the array.
    for (int i = 0; i < n; i++)
        ans += arr[i];
     
    return ans * (int)(Math.pow(2, n - 1));
    }
     
    // Driver Code
    public static void main(String args[])
    {
    int arr[]= { 6, 7, 8 };
    int n = arr.length;
     
    System.out.println(sum(arr, n));
    }
}
     
// This code is contributed by Nikita Tiwari.

Python3

# Python 3 program to find sum of
# all sub-sequences of an array.
 
 
# Return sum of sum of all sub-sequence.
def sm(arr , n) :
    ans = 0
 
    # Finding sum of the array.
    for i in range(0, n) :
        ans = ans + arr[i]
     
    return ans * pow(2, n - 1)
     
     
# Driver Code
arr = [ 6, 7, 8 ]
n=len(arr)
 
print(sm(arr, n))
 
 
# This code is contributed by Nikita Tiwari.

C#

// C# program to find sum of
// all sub-sequences of an array.
using System;
 
class GFG
{
     
    // Return sum of sum of all sub-sequence.
    static int sum(int []arr, int n)
    {
    int ans = 0;
     
    // Finding sum of the array.
    for (int i = 0; i < n; i++)
        ans += arr[i];
     
    return ans * (int)(Math.Pow(2, n - 1));
    }
     
    // Driver Code
    public static void Main()
    {
    int []arr= { 6, 7, 8 };
    int n = arr.Length;
     
    Console.Write(sum(arr, n));
    }
}
     
// This code is contributed by nitin mittal

PHP

<?php
// PHP program to find sum of
// all sub-sequences of an array.
 
// Return sum of sum of
// all sub-sequence.
function sum($arr, $n)
{
    $ans = 0;
 
    // Finding sum of the array.
    for ($i = 0; $i < $n; $i++)
        $ans += $arr[$i];
     
    return $ans * pow(2, $n - 1);
}
 
// Driver Code
$arr = array(6, 7, 8);
$n = sizeof($arr);
echo sum($arr, $n) ;
 
// This code is contributed by nitin mittal.
?>

Javascript

<script>
 
// JavaScript program to find sum of all sub-sequences
// of an array.
 
// Return sum of sum of all sub-sequence.
function sum(arr, n)
{
  var ans = 0;
 
  // Finding sum of the array.
  for (var i = 0; i < n; i++)
    ans += arr[i];
 
  return ans * Math.pow(2, n - 1);
}
 
// Driver Code
var arr = [6, 7, 8];
var n = arr.length;
document.write( sum(arr, n));
 
</script>
Producción

84

Complejidad temporal:  O(n)
Espacio auxiliar: O(1)  

Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *