1925 - Numar 9: Difference between revisions
Pop Giulia (talk | contribs) |
Pop Giulia (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/1925/numar9] | |||
==Cerința== | ==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. | 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. |
Latest revision as of 12:54, 20 May 2023
Sursa: [1]
Cerința[edit | edit source]
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[edit | edit source]
Fișierul de intrare numar9.in conține pe prima linie numerele naturale S şi K.
Date de ieșire[edit | edit source]
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[edit | edit source]
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:[edit | edit source]
numar9.in
25 13 numar9.out
799 6
Explicație[edit | edit source]
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[edit | edit source]
<syntaxhighlight lang="python" line>
- 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")
</syntaxhighlight>