1925 - Numar 9

From Bitnami MediaWiki

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

<syntaxhighlight lang="python" line>

  1. Citim valorile S și K din fișierul de intrare

with open("numar9.in") as f:

   S, K = map(int, f.readline().split())
  1. Inițializăm A cu 0

A = 0

  1. 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
  1. 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")

</syntaxhighlight>