3906 - suma perm cif: Difference between revisions

From Bitnami MediaWiki
Gabii (talk | contribs)
Pagină nouă: = Cerința = Scrieți un program care citește un număr natural <code>n</code> cu cifre distincte și care să calculeze și să afișeze suma <code>S</code> a tuturor numerelor obținute prin rearanjarea cifrelor lui <code>n</code>. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>. = Date de ieșire = Programul va afișa pe ecran numărul <code>S</code>, reprezentând suma cerută. = Restricții și precizări = * <code>n</code> are cel mu...
 
Gabii (talk | contribs)
am adaugat explicatia
 
Line 17: Line 17:
Ieșire
Ieșire
  1332
  1332
== Explicație ==
Numere obținute din <code>123</code> prin amestecarea cifrelor sunt <code>123</code>, <code>132</code>, <code>213</code>, <code>231</code>, <code>312</code> și <code>321</code>, iar suma lor este <code>1332</code>.


== Exemplul 2 ==
== Exemplul 2 ==

Latest revision as of 21:42, 9 December 2023

Cerința[edit | edit source]

Scrieți un program care citește un număr natural n cu cifre distincte și care să calculeze și să afișeze suma S a tuturor numerelor obținute prin rearanjarea cifrelor lui n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul S, reprezentând suma cerută.

Restricții și precizări[edit | edit source]

  • n are cel mult 9 cifre și are cifrele distincte.

Exemplul 1[edit | edit source]

Intrare

123

Ieșire

1332

Explicație[edit | edit source]

Numere obținute din 123 prin amestecarea cifrelor sunt 123, 132, 213, 231, 312 și 321, iar suma lor este 1332.

Exemplul 2[edit | edit source]

Intrare

1323

consola

Cifrele trebuie să fie distincte.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> from itertools import permutations

def calculate_sum_of_permutations(n):

   # Convertim numărul într-o listă de cifre
   digits = [int(digit) for digit in str(n)]
   # Verificăm dacă cifrele sunt distincte
   if len(digits) != len(set(digits)):
       raise ValueError("Cifrele trebuie să fie distincte.")
   # Generăm toate permutările cifrelor
   all_permutations = permutations(digits)
   # Calculăm suma permutărilor și le afișăm
   total_sum = 0
   for perm in all_permutations:
       perm_number = int(.join(map(str, perm)))
       total_sum += perm_number
   return total_sum

def validate_n(n):

   # Verificăm restricțiile
   return 1 <= n <= 10**9 - 1

def main():

   try:
       n = int(input("Introduceți un număr cu cifre distincte: "))
       # Verificăm restricțiile utilizând funcția separată
       if not validate_n(n):
           print("Numărul trebuie să fie mai mic decât 10^9.")
           return
       # Calculăm suma și o afișăm
       result = calculate_sum_of_permutations(n)
       print(f"Suma tuturor numerelor obținute prin rearanjarea cifrelor lui {n} este: {result}")
   except ValueError as e:
       print(e)

if __name__ == "__main__":

   main()

</syntaxhighlight>