Sum of all numbers that can be formed with permutations of n digits

05 Jul, 2022
Given n distinct digits (from 0 to 9), find sum of all n digit numbers that can be formed using these digits. It is assumed that numbers formed with leading 0 are allowed.
Example: 
Input: 1 2 3
Output: 1332
Explanation
Numbers Formed: 123 , 132 , 312 , 213, 231 , 321
123 + 132 + 312 + 213 + 231 + 321 = 1332
Total numbers that can be formed using n digits is total number of permutations of n digits, i.e factorial(n). Now, since the number formed is a n-digit number, each digit will appear factorial(n)/n times at each position from least significant digit to most significant digit. Therefore, sum of digits at a position = (sum of all the digits) * (factorial(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
Implementation:
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find sun of numbers formed// by all permutations of given set of digits#include<stdio.h> // function to calculate factorial of a numberint 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;} // Function to calculate sum of all numbersint getSum(int arr[],int n){    // calculate factorial    int fact = factorial(n);     // sum of all the given digits at different    // positions is same and is going to be stored    // in digitsum.    int digitsum = 0;    for (int i=0; i<n; i++)        digitsum += arr[i];    digitsum *= (fact/n);     // Compute result (sum of all the numbers)    int res = 0;    for (int i=1, k=1; i<=n; i++)    {        res  += (k*digitsum);        k = k*10;    }     return res;} // Driver program to test above functionint main(){    // n distinct digits    int arr[] = {1, 2, 3};    int n = sizeof(arr)/sizeof(arr[0]);     // Print sum of all the numbers formed    printf("%d", getSum(arr, n));     return 0;}
// Java program to find sum// of numbers formed by all// permutations of given set// of digitsimport java.io.*; class GFG{     // function to calculate// factorial of a numberstatic 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;} // Function to calculate// sum of all numbersstatic int getSum(int arr[], int n){    // calculate factorial    int fact = factorial(n);     // sum of all the given    // digits at different    // positions is same and    // is going to be stored    // in digitsum.    int digitsum = 0;    for (int i = 0; i < n; i++)        digitsum += arr[i];    digitsum *= (fact / n);     // Compute result (sum    // of all the numbers)    int res = 0;    for (int i = 1, k = 1;             i <= n; i++)    {        res += (k * digitsum);        k = k * 10;    }     return res;} // Driver Codepublic static void main (String[] args){     // n distinct digits    int arr[] = {1, 2, 3};    int n = arr.length;         // Print sum of all    // the numbers formed    System.out.println(getSum(arr, n));}} // This code is contributed// by ajit
# Python3 program to find sun of# numbers formed by all permutations# of given set of digits # function to calculate factorial# of a numberdef factorial(n):     f = 1    if (n == 0 or n == 1):        return 1    for i in range(2, n + 1):        f = f * i    return f # Function to calculate sum# of all numbersdef getSum(arr, n):     # calculate factorial    fact = factorial(n)     # sum of all the given digits at    # different positions is same and    # is going to be stored in digitsum.    digitsum = 0    for i in range(n):        digitsum += arr[i]    digitsum *= (fact // n)     # Compute result (sum of    # all the numbers)    res = 0    i = 1    k = 1    while i <= n :        res += (k * digitsum)        k = k * 10        i += 1     return res # Driver Codeif __name__ == "__main__":         # n distinct digits    arr = [1, 2, 3]    n = len(arr)     # Print sum of all the numbers formed    print(getSum(arr, n)) # This code is contributed by ita_c
// C# program to find sum// of numbers formed by all// permutations of given set// of digitsusing System; class GFG{     // function to calculate// factorial of a numberstatic 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;} // Function to calculate// sum of all numbersstatic int getSum(int []arr,                  int n){    // calculate factorial    int fact = factorial(n);     // sum of all the given    // digits at different    // positions is same and    // is going to be stored    // in digitsum.    int digitsum = 0;    for (int i = 0; i < n; i++)        digitsum += arr[i];    digitsum *= (fact / n);     // Compute result (sum    // of all the numbers)    int res = 0;    for (int i = 1, k = 1;            i <= n; i++)    {        res += (k * digitsum);        k = k * 10;    }     return res;} // Driver Codestatic public void Main (){     // n distinct digits    int []arr = {1, 2, 3};    int n = arr.Length;         // Print sum of all    // the numbers formed    Console.WriteLine(getSum(arr, n));}} // This code is contributed// by akt_mit
<?php// PHP program to find sum// of numbers formed by all// permutations of given set// of digits function to// calculate factorial of a numberfunction factorial($n){    $f = 1;    if ($n == 0||$n == 1)        return 1;    for ($i = 2; $i <= $n; $i++)        $f = $f * $i;    return $f;} // Function to calculate// sum of all numbersfunction getSum($arr,$n){    // calculate factorial    $fact = factorial($n);     // sum of all the given    // digits at different    // positions is same and    // is going to be stored    // in digitsum.    $digitsum = 0;    for ($i = 0; $i < $n; $i++)        $digitsum += $arr[$i];    $digitsum *= ($fact / $n);     // Compute result (sum    // of all the numbers)    $res = 0;    for ($i = 1, $k = 1; $i <= $n; $i++)    {        $res += ($k * $digitsum);        $k = $k * 10;    }     return $res;} // Driver Code // n distinct digits$arr = array(1, 2, 3);$n = sizeof($arr); // Print sum of all// the numbers formedecho getSum($arr, $n); // This code is contributed by ajit?>
<script> // Javascript program to find sum of// numbers formed by all permutations// of given set of digits // Function to calculate// factorial of a numberfunction factorial(n){    let f = 1;         if (n == 0 || n == 1)        return 1;             for (let i = 2; i <= n; i++)        f = f * i;             return f;}  // Function to calculate// sum of all numbersfunction getSum(arr, n){         // Calculate factorial    let fact = factorial(n);      // Sum of all the given    // digits at different    // positions is same and    // is going to be stored    // in digitsum.    let digitsum = 0;    for (let i = 0; i < n; i++)        digitsum += arr[i];             digitsum *= (fact / n);      // Compute result (sum    // of all the numbers)    let res = 0;    for(let i = 1, k = 1;            i <= n; i++)    {        res += (k * digitsum);        k = k * 10;    }    return res;} // Driver code // n distinct digitslet arr = [1, 2, 3];let n = arr.length;  // Print sum of all// the numbers formeddocument.write(getSum(arr, n)); // This code is contributed by susmitakundugoaldanga     </script>
1332
Time Complexity: O(n)Auxiliary Space: O(1)
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
jit_t
ukasp
subham348
susmitakundugoaldanga
hardikkoriintern
Modular Arithmetic
number-digits
permutation
Arrays
Combinatorial
Arrays
permutation
Combinatorial
Modular Arithmetic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Maximum and minimum of an array using minimum number of comparisons
Top 50 Array Coding Problems for Interviews
Multidimensional Arrays in Java
Stack Data Structure (Introduction and Program)
Linear Search
Write a program to print all permutations of a given string
Permutation and Combination in Python
Factorial of a large number
Count of subsets with sum equal to X
itertools.combinations() module in Python to print all possible combinations