0966 - X Min
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
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul va afișa pe ecran un număr natural de K cifre reprezentând elementul primar al mulțimii M. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricții și precizări
- 1 ≤ K ≤ 33
- toate cifrele lui X sunt nenule
Exemple
Exemplu 1
- Intrare
- 3
- 124
- Ieșire
- 223
Exemplu 2
- Intrare
- 36
- Ieșire
- Datele nu sunt comform restricțiilor impuse
Rezolvare
<syntaxhighlight lang="python" line="1"> def citeste_k():
while True: try: k = int(input("Introduceti numarul de cifre: ")) if 1<=k<=33: print("Datele sunt corecte.") return k else: print("Datele nu sunt conform restricțiilor impuse.") exit() except ValueError: print("Trebuie introduse doar numere intregi.") exit()
def elementul_primar(k):
x = int(input("Introduceti numarul : ")) sum = 0 for c in str(x): if c.isdigit(): 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() return int(.join(str(x) for x in a))
if __name__ == '__main__':
k = citeste_k() elem_primar = elementul_primar(k) print("Elementul primar al mulțimii este: ", elem_primar)
</syntaxhighlight>
Explicații
Da, acesta este un program Python care citeste de la utilizator un număr întreg k reprezentând numărul de cifre și un număr întreg x și returnează elementul primar al mulțimii, format din cifrele lui x.
Funcția citeste_k() primește input-ul utilizatorului și se asigură că este un număr întreg cuprins între 1 și 33. Dacă input-ul nu este corect, utilizatorul primește un mesaj corespunzător și programul se oprește.
Funcția elementul_primar(k) primește numărul x de la utilizator și determină cifrele sale, apoi creează o listă goală a cu o lungime de 101. Acest lucru se face pentru a putea stoca cifrele elementului primar, deoarece nu știm câte cifre va avea elementul primar în avans.
În continuare, funcția calculează suma cifrelor lui x și apoi împarte această sumă la numărul de cifre k. Rezultatul împărțirii este stocat în lista a, la poziția poz și apoi scăzut din suma totală a cifrelor lui x. Acest lucru se repetă pentru fiecare cifră a elementului primar.
După completarea listei a, aceasta este sortată și transformă într-un număr întreg folosind funcția join(). Acest număr reprezintă elementul primar al mulțimii.
În blocul if __name__ == '__main__':, programul rulează citind numărul k de la utilizator, apoi determinând elementul primar al mulțimii și afișându-l la ieșire.