Рубрики

Сумма всех чисел, которые могут быть сформированы с перестановками из n цифр

Учитывая n различных цифр (от 0 до 9), найдите сумму всех n цифр, которые могут быть сформированы с использованием этих цифр. Предполагается, что числа, сформированные с начальным 0, разрешены.

Пример:

Input: 1 2 3
Output: 1332
Explanation
Numbers Formed: 123 , 132 , 312 , 213, 231 , 321
123 + 132 + 312 + 213 + 231 + 321 = 1332

Общее число, которое может быть сформировано с использованием n цифр, представляет собой общее количество перестановок n цифр, то есть факториал (n). Теперь, поскольку сформированное число представляет собой число из n цифр, каждая цифра будет отображаться факториально (n) / n раз в каждой позиции от наименее значимой цифры до самой значимой цифры. Следовательно, сумма цифр в позиции = (сумма всех цифр) * (факториал (n) / n).

Considering the example digits as 1 2 3

factorial(3)/3 = 2

Sum of digits at least significant digit = (1 + 2 + 3) * 2 = 12

Similarly sum of digits at tens, hundreds place is 12. 
(This sum will contribute as 12 * 100)

Similarly sum of digits at tens, thousands place is 12. 
(This sum will contribute as 12 * 1000)

Required sum of all numbers = 12 + (10 * 12) + (100 * 12) = 1332

C ++

// C ++ программа для поиска солнца образовавшихся чисел
// по всем перестановкам заданного набора цифр
#include<stdio.h>

  
// функция для вычисления факториала числа

int factorial(int n)

{

    int f = 1;

    if (n==0||n==1)

        return 1;

    for (int i=2; i<=n; i++)

        f = f*i;

    return f;

}

  
// Функция для вычисления суммы всех чисел

int getSum(int arr[],int n)

{

    // вычисляем факториал

    int fact = factorial(n);

  

    // сумма всех заданных цифр на разных

    // позиции одинаковы и будут сохранены

    // в цифре.

    int digitsum = 0;

    for (int i=0; i<n; i++)

        digitsum += arr[i];

    digitsum *= (fact/n);

  

    // Вычисляем результат (сумма всех чисел)

    int res = 0;

    for (int i=1, k=1; i<=n; i++)

    {

        res  += (k*digitsum);

        k = k*10;

    }

  

    return res;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    // n различных цифр

    int arr[] = {1, 2, 3};

    int n = sizeof(arr)/sizeof(arr[0]);

  

    // Вывести сумму всех образованных чисел

    printf("%d", getSum(arr, n));

  

    return 0;

}

Джава

// Java-программа для поиска суммы
// из чисел, образованных всеми
// перестановки заданного множества
// из цифр

import java.io.*;

  

class GFG 

{

      
// функция для расчета
// факториал числа

static int factorial(int n)

{

    int f = 1;

    if (n == 0|| n == 1)

        return 1;

    for (int i = 2; i <= n; i++)

        f = f * i;

    return f;

}

  
// Функция для расчета
// сумма всех чисел

static int getSum(int arr[], int n)

{

    // вычисляем факториал

    int fact = factorial(n);

  

    // сумма всех данных

    // цифры на разных

    // позиции одинаковы и

    // будет храниться

    // в цифре.

    int digitsum = 0;

    for (int i = 0; i < n; i++)

        digitsum += arr[i];

    digitsum *= (fact / n);

  

    // Вычисляем результат (сумма

    // всех чисел)

    int res = 0;

    for (int i = 1, k = 1

             i <= n; i++)

    {

        res += (k * digitsum);

        k = k * 10;

    }

  

    return res;

}

  
// Код драйвера

public static void main (String[] args) 

{

  

    // n различных цифр

    int arr[] = {1, 2, 3};

    int n = arr.length;

      

    // Вывести сумму всех

    // сформированные числа

    System.out.println(getSum(arr, n));

}
}

  
// Этот код добавлен
// от ajit

Python 3

# Python 3 программа для поиска солнца
# числа, образованные всеми перестановками
# заданного набора цифр

  
# функция для расчета факториала
№ числа

def factorial(n):

  

    f = 1

    if (n == 0 or n == 1):

        return 1

    for i in range(2, n + 1):

        f = f * i

    return f

  
# Функция для расчета суммы
№ всех номеров

def getSum(arr, n):

  

    # рассчитать факториал

    fact = factorial(n)

  

    # сумма всех заданных цифр в

    # разные позиции одинаковы и

    # будет храниться в цифре.

    digitsum = 0

    for i in range(n):

        digitsum += arr[i]

    digitsum *= (fact // n)

  

    # Вычислить результат (сумма

    # все цифры)

    res = 0

    i = 1

    k = 1

    while i <= n :

        res += (k * digitsum)

        k = k * 10

        i += 1

  

    return res

  
Код водителя

if __name__ == "__main__":

      

    # n различных цифр

    arr = [1, 2, 3]

    n = len(arr)

  

    # Вывести сумму всех образованных чисел

    print(getSum(arr, n))

  
# Этот код предоставлен ita_c

C #

// C # программа для поиска суммы
// из чисел, образованных всеми
// перестановки заданного множества
// из цифр

using System;

  

class GFG

{

      
// функция для расчета
// факториал числа

static int factorial(int n)

{

    int f = 1;

    if (n == 0|| n == 1)

        return 1;

    for (int i = 2; i <= n; i++)

        f = f * i;

    return f;

}

  
// Функция для расчета
// сумма всех чисел

static int getSum(int []arr, 

                  int n)

{

    // вычисляем факториал

    int fact = factorial(n);

  

    // сумма всех данных

    // цифры на разных

    // позиции одинаковы и

    // будет храниться

    // в цифре.

    int digitsum = 0;

    for (int i = 0; i < n; i++)

        digitsum += arr[i];

    digitsum *= (fact / n);

  

    // Вычисляем результат (сумма

    // всех чисел)

    int res = 0;

    for (int i = 1, k = 1; 

            i <= n; i++)

    {

        res += (k * digitsum);

        k = k * 10;

    }

  

    return res;

}

  
// Код драйвера

static public void Main ()

{

  

    // n различных цифр

    int []arr = {1, 2, 3};

    int n = arr.Length;

      

    // Вывести сумму всех

    // сформированные числа

    Console.WriteLine(getSum(arr, n));

}
}

  
// Этот код добавлен
// от akt_mit

PHP

<?php
// PHP программа для поиска суммы
// из чисел, образованных всеми
// перестановки заданного множества
// функции цифр в
// вычисляем факториал числа

function factorial($n)

{

    $f = 1;

    if ($n == 0||$n == 1)

        return 1;

    for ($i = 2; $i <= $n; $i++)

        $f = $f * $i;

    return $f;

}

  
// Функция для расчета
// сумма всех чисел

function getSum($arr,$n)

{

    // вычисляем факториал

    $fact = factorial($n);

  

    // сумма всех данных

    // цифры на разных

    // позиции одинаковы и

    // будет храниться

    // в цифре.

    $digitsum = 0;

    for ($i = 0; $i < $n; $i++)

        $digitsum += $arr[$i];

    $digitsum *= ($fact / $n);

  

    // Вычисляем результат (сумма

    // всех чисел)

    $res = 0;

    for ($i = 1, $k = 1; $i <= $n; $i++)

    {

        $res += ($k * $digitsum);

        $k = $k * 10;

    }

  

    return $res;

}

  
// Код драйвера

  
// n различных цифр

$arr = array(1, 2, 3);

$n = sizeof($arr);

  
// Вывести сумму всех
// сформированные числа

echo getSum($arr, $n);

  
// Этот код предоставлен ajit
?>


Выход:

1332

Эта статья предоставлена Суровым Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сумма всех чисел, которые могут быть сформированы с перестановками из n цифр

0.00 (0%) 0 votes