1925 - Numar 9

De la Universitas MediaWiki

Sursa: [1]

Cerința

Se dau două numere naturale S şi K. Să se afle cel mai mic număr natural A care are suma cifrelor egală cu S, precum şi restul împărţirii lui A la K.

Date de intrare

Fișierul de intrare numar9.in conține pe prima linie numerele naturale S şi K.

Date de ieșire

Fișierul de ieșire numar9.out va conține pe prima linie numărul A, iar pe a doua linie restul împărţirii lui A la K.

Restricții și precizări

1 ≤ S ≤ 20.000.000 1 ≤ K ≤ 1.000.000 Pentru prima cerinţă se acordă 60p, iar pentru a doua 40p Pentru a primi punctajul pentru a doua cerinţă, în fişierul numar9.out trebuie să afişaţi două numere

Exemplu:

numar9.in

25 13 numar9.out

799 6

Explicație

Cel mai mic număr natural care are suma cifrelor egală cu 25 este 799. Restul împărţirii lui 799 la 13 este 6.

Solutie

# Citim valorile S și K din fișierul de intrare
with open("numar9.in") as f:
    S, K = map(int, f.readline().split())

# Inițializăm A cu 0
A = 0

# Parcurgem cifrele de la dreapta la stânga
while S > 0:
    # Adunăm cifra curentă la A
    cifra = min(S, 9) # putem aduna maxim 9 la A
    A = A * 10 + cifra
    S -= cifra

# Găsim restul împărțirii lui A la K și afișăm rezultatele în fișierul de ieșire
with open("numar9.out", "w") as f:
    f.write(str(A) + "\n")
    f.write(str(A % K) + "\n")