3611 - Sumă Cif Perm
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 "Nu au fost respectate cerintele 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>
- 3611 - sumacifperm
- Importam functia permutations din modulul itertools
from itertools import permutations
def validare(num):
# Daca datele sunt invalide v-om face raise la eroarea ValueError
# 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 not all(conditii): raise ValueError
def sumacifperm(num):
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)
if __name__ == '__main__':
num = int(input())
# Verificam daca datele introduse sunt valide # daca nu afisam mesajul corespunsador try: validare(num) except ValueError: print("Nu au fost respectate cerintele impuse") else: print("Datele de intrare corespund restricțiilor impuse")
sumacifperm(num)
</syntaxhighlight>