3906 - suma perm cif
Cerința
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
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran numărul S
, reprezentând suma cerută.
Restricții și precizări
n
are cel mult9
cifre și are cifrele distincte.
Exemplul 1
Intrare
123
Ieșire
1332
Explicație
Numere obținute din 123
prin amestecarea cifrelor sunt 123
, 132
, 213
, 231
, 312
și 321
, iar suma lor este 1332
.
Exemplul 2
Intrare
1323
consola
Cifrele trebuie să fie distincte.
Rezolvare
<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>