1925 - Numar 9: Difference between revisions

From Bitnami MediaWiki
Pop Giulia (talk | contribs)
Pagină nouă: ==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 ≤...
 
Pop Giulia (talk | contribs)
Line 24: Line 24:
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.
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==
==Solutie==
<syntaxhighlight lang="python" line>
# Citim valorile S și K din fișierul de intrare
# Citim valorile S și K din fișierul de intrare
with open("numar9.in") as f:
with open("numar9.in") as f:
Line 42: Line 43:
     f.write(str(A) + "\n")
     f.write(str(A) + "\n")
     f.write(str(A % K) + "\n")
     f.write(str(A % K) + "\n")
</syntaxhighlight>

Revision as of 10:26, 30 April 2023

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>