0382 - Aproape K: Difference between revisions
Pagină nouă: ==Cerință== Se dau două numere naturale nenule '''n''' și '''k'''. Să se determine multiplul lui '''k''' cel mai apropiat de '''n'''. ==Date de intrare== Programul citește de la tastatură numerele '''n''' și '''k''', în această ordine. ==Date de ieșire== Programul afișează pe ecran numărul '''p''', reprezentând multiplul lui '''k''' cel mai apropiat de '''n'''. ==Restricții și precizări== *1 ≤ '''k''' ≤ '''n''' ≤ 1.000.000 *dacă există mai mulți... |
Vardai Erwin (talk | contribs) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran numărul '''p''', reprezentând multiplul lui '''k''' cel mai apropiat de '''n'''. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | |||
==Restricții și precizări== | ==Restricții și precizări== | ||
Line 18: | Line 18: | ||
;Ieșire | ;Ieșire | ||
:Datele de intrare corespund restricțiilor impuse. | |||
:20 | :20 | ||
Line 34: | Line 34: | ||
def aproape_k(k, n): | def aproape_k(k, n): | ||
p = k // n | p = k // n | ||
if k - p * n > n * (p + 1) - k: | if k - p * n > n * (p + 1) - k: # Cautam multiplul cel mai apropiat de n | ||
return n * (p + 1) | return n * (p + 1) | ||
else: | else: | ||
Line 42: | Line 42: | ||
# Citirea datelor de intrare și apelarea funcțiilor de validare și de calcul | # Citirea datelor de intrare și apelarea funcțiilor de validare și de calcul | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n, k = map(int, input().split()) | n, k = map(int, input().split()) # Introducem datele de la tastatura | ||
if validare(n, k): | if validare(n, k): # Apelam functia de validare | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
print(aproape_k(n, k)) | print(aproape_k(n, k)) # Apelam functia care cauta multiplul lui k cel mai apropiat de n | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 18:17, 22 April 2023
Cerință[edit | edit source]
Se dau două numere naturale nenule n și k. Să se determine multiplul lui k cel mai apropiat de n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n și k, în această ordine.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran numărul p, reprezentând multiplul lui k cel mai apropiat de n. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
- 1 ≤ k ≤ n ≤ 1.000.000
- dacă există mai mulți multipli ai lui k la fel de apropiați de n, se va afișa cel mai mic.
Exemplul 1[edit | edit source]
- Intrare
- 18 5
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 20
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1">
- Definirea funcției de validare a datelor de intrare
def validare(n, k):
if 1 <= k <= 1000000 and 1 <= n <= 1000000 and k <= n: return True return False
- Definirea funcției pentru calculul valorii apropiate de k
def aproape_k(k, n):
p = k // n if k - p * n > n * (p + 1) - k: # Cautam multiplul cel mai apropiat de n return n * (p + 1) else: return p * n
- Citirea datelor de intrare și apelarea funcțiilor de validare și de calcul
if __name__ == "__main__":
n, k = map(int, input().split()) # Introducem datele de la tastatura if validare(n, k): # Apelam functia de validare print("Datele de intrare corespund restricțiilor impuse.") print(aproape_k(n, k)) # Apelam functia care cauta multiplul lui k cel mai apropiat de n else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>