0382 - Aproape K

De la Universitas MediaWiki

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

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

  • 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

Intrare
18 5
Ieșire
Datele de intrare corespund restricțiilor impuse.
20

Rezolvare

Rezolvare ver. 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.")