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
nare cel mult9cifre ș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>