0966 - X Min

De la Universitas MediaWiki
Versiunea din 18 martie 2023 19:04, autor: MiclausIoana (discuție | contribuții) (Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/966/xmin] == Enunț == Fie '''X''' un număr natural format din exact '''K''' cifre, toate nenule, iar '''S''' suma cifrelor lui '''X'''. Pornind de la aceste numere, se construiește mulțimea '''M''' a tuturor numerelor naturale care: au suma cifrelor egală cu '''S''' sunt formate fiecare din exact '''K''' cifre, toate cifrele fiind nenule. Pentru fiecare număr din mulțimea '''M''' se calculează produsul cifrelor sale. Fie '''P'...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Sursă: [1]

Enunț

Fie X un număr natural format din exact K cifre, toate nenule, iar S suma cifrelor lui X. Pornind de la aceste numere, se construiește mulțimea M a tuturor numerelor naturale care:

au suma cifrelor egală cu S sunt formate fiecare din exact K cifre, toate cifrele fiind nenule. Pentru fiecare număr din mulțimea M se calculează produsul cifrelor sale. Fie P valoarea maximă a produselor calculate.

Cel mai mic număr din mulțimea M care are produsul cifrelor egal cu P îl vom denumi elementul primar al mulțimii.

Cerință

Scrieţi un program care să citească numerele K și X (cu semnificația din enunț) şi care să determine elementul primar al mulțimii M.

Date de intrare

Programul citește de la tastatură numerele K X, numărul X fiind format din K cifre.

Date de ieșire

Programul va afișa pe ecran un număr natural de K cifre reprezentând elementul primar al mulțimii M.

Restricții și precizări

  • 1 ≤ K ≤ 33
  • toate cifrele lui X sunt nenule

Exemplu

Intrare
3
124
Ieșire
223

Rezolvare

k = int(input("Numărul de cifre: "))
n = input("Numărul: ").strip()  # adaugam metoda .strip() pentru a elimina spațiile inutile din jurul numărului

sum = 0
for c in n:
    if c.isdigit():  # adaugam verificarea pentru a ignora caracterele care nu sunt cifre
        sum += int(c)

a = [0] * 101
poz = 1
while k:
    a[poz] = sum // k
    sum -= a[poz]
    poz += 1
    k -= 1

a = a[1:poz]
a.sort()

print(''.join(str(x) for x in a))