# Codingame Solution: Divisibility windows

## Goal

Given two numbers`d`and

`x`, the aim is to find

`a`and

`b`the two numbers divisible by

`d`around and closest to

`x`, i.e.:

—

`a`is the largest multiple of

`d`such that

`a`<

`x`,

—

`b`is the smallest multiple of

`d`such that

`b`>

`x`.

**Input**

**Line 1 :**

`d`

**Line 2 :**

`x`

Output

**Line 1 :**

`a`and

`b`space-separated

**Constraints**

`x`is never divisible by

`d`

`d`<

`x`

2 <=

`d`<= 65536

3 <=

`x`<= 2147418111

## Solution

The problem statement asks to find \(a, b\) such that \(a<x<b\) and \(d | a,b\). Since \(d<x\) and \(d\not | x\), it's enough to scale \(x\) down by \(d\) and the integer part of that result \(r=\left\lfloor\frac{x}{d}\right\rfloor \) must be the maximum, such that \(a=r \cdot d\).

For the same argument, we can say that \(s=\left\lceil\frac{x}{d}\right\rceil \), such that \(b=s \cdot d\) or even simpler \(b= a+ d\)

const d = +readline(); const x = +readline(); print([Math.floor(x / d) * d, Math.ceil(x / d) * d].join(" "))