3906 - suma perm cif: Difference between revisions
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... |
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 mult9
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>