3611 - Sumă Cif Perm

From Bitnami MediaWiki
Revision as of 03:08, 1 April 2023 by Adrian (talk | contribs) (Pagină nouă: == Cerința == Se dă un număr natural '''num''' de exact trei cifre distincte. Să se calculeze suma tuturor numerelor care se pot obține prin interschimbarea cifrelor lui '''num'''. == Date de intrare == Programul citește de la tastatură numărul '''num'''. == Date de ieșire == Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișa pe ecran suma cerută. În cazul în care datele introduse de la tastatură...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Se dă un număr natural num de exact trei cifre distincte. Să se calculeze suma tuturor numerelor care se pot obține prin interschimbarea cifrelor lui num.

Date de intrare

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

Date de ieșire

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișa pe ecran suma cerută.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse".

Restricții și precizări

  • 102 ⩽ num ⩽ 987
  • num are cele trei cifre distincte

Exemplu 1

Intrare
123
Ieșire
Datele de intrare corespund restricțiilor impuse
1332


Exemplu 2

Intrare
122
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

<syntaxhighlight lang="python" line>

  1. 3611 - sumacifperm

from itertools import permutations


def sumacifperm():

   num = int(input())
   # Functia "set()" va converti string-ul (generat din num in cazul nostru)
   # intr-un set. Acest set contine doar caractele unice gasite in num.
   # Deci daca:
   # num = 123, set(str(num)) = {3, 2, 1}
   # num = 122, set(str(num)) = {2, 1}
   # Mai multe informatii despre tipul de data set:
   # https://www.w3schools.com/python/python_sets.asp
   # Daca numarul de cifre din set nu este identic cu numarul de cifre din num
   # atunci inseamna ca cifrele din num nu sunt unice.
   conditii = (
       num >= 102, num <= 987,
       len(set(str(num))) == len(str(num)),
       len(str(num)) == 3
   )
   if all(conditii):
       print("Datele de intrare corespund restricțiilor impuse")
       suma = 0
       # Functia "permutations()" va genera toare permutatiile cifrelor
       # lui num. Daca num = 123 atunci toate permutatiile posibile sunt:
       # 123, 132, 213, 231, 312, 321
       for num_combinatie in permutations(str(num), 3):
           suma += int(.join(num_combinatie))
       print(suma)
   else:
       print("Nu au fost respectate cerintele impuse")


if __name__ == '__main__':

   sumacifperm()

</syntaxhighlight>