logo

Suma tuturor numerelor care pot fi formate cu permutări de n cifre

Încercați-l pe GfG Practice ' title= #practiceLinkDiv { display: none !important; }

Având n cifre distincte (de la 0 la 9), găsiți suma tuturor numerelor de n cifre care pot fi formate folosind aceste cifre. Se presupune că sunt permise numerele formate cu 0 înainte.

sortarea unui arraylist java

Exemplu:  

Input: 1 2 3 Output: 1332 Explanation Numbers Formed: 123  132  312  213 231  321 123 + 132 + 312 + 213 + 231 + 321 = 1332
Recommended Practice Suma permutărilor Încearcă!

Numerele totale care pot fi formate folosind n cifre reprezintă numărul total de permutări ale n cifre, adică factorial (n). Acum, deoarece numărul format este un număr de n cifre, fiecare cifră va apărea factorial(n)/n ori la fiecare poziție de la cifră cea mai puțin semnificativă la cifra cea mai semnificativă. Prin urmare, suma cifrelor la o poziție = (suma tuturor cifrelor) * (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

Implementare:

C++
// C++ program to find sum of numbers formed // by all permutations of given set of digits #include // function to calculate factorial of a number 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 numbers 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 program to test above function int 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
// Java program to find sum  // of numbers formed by all // permutations of given set // of digits import java.io.*; class GFG  {   // function to calculate // factorial of a number 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; } // Function to calculate // sum of all numbers static 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 Code public 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
# Python3 program to find sum of  # numbers formed by all permutations # of given set of digits # function to calculate factorial # of a number 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 # Function to calculate sum  # of all numbers def 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 Code if __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#
// C# program to find sum  // of numbers formed by all // permutations of given set // of digits using System; class GFG {   // function to calculate // factorial of a number 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; } // Function to calculate // sum of all numbers static 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 Code static 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 number function 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 numbers function 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 formed echo getSum($arr $n); // This code is contributed by ajit ?> 
JavaScript
<script> // Javascript program to find sum of  // numbers formed by all permutations // of given set of digits // Function to calculate // factorial of a number function 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 numbers function 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 digits let arr = [1 2 3]; let n = arr.length;   // Print sum of all // the numbers formed document.write(getSum(arr n)); // This code is contributed by susmitakundugoaldanga   </script> 

Ieșire
1332

Complexitatea timpului: O(n)
Spațiu auxiliar: O(1)