0382 - Aproape K: Difference between revisions

From Bitnami MediaWiki
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...
 
 
(2 intermediate revisions by 2 users not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul afișează pe ecran numărul '''p''', reprezentând multiplul lui '''k''' cel mai apropiat de '''n'''.
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 ≤ kn ≤ 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">

  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


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


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