Skip to content

Commit 1ccc69a

Browse files
committed
add closest_to_n_and_divisble_by_m
1 parent 92b1926 commit 1ccc69a

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
""" Iterative Checking """
2+
3+
def closest_number(n:int,m:int) -> int:
4+
"""
5+
<<< closest_number(10, 3)
6+
9
7+
<<< closest_number(10, 5)
8+
10
9+
<<< closest_number(15674.246)
10+
15675
11+
"""
12+
closest = 0
13+
min_diff = float('inf')
14+
15+
for i in range(n-abs(m), n+abs(m)+1):
16+
if i % m == 0:
17+
diff = abs(n - i)
18+
if diff < min_diff or (diff == min_diff and abs(i) > abs(closest)):
19+
closest = i
20+
min_diff = diff
21+
return closest
22+
if __name__ == "__main__":
23+
from doctest import testmod
24+
testmod(verbose=True)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
""" By finding Quotient """
2+
3+
def closest_number(n:int, m:int ) -> int:
4+
"""
5+
<<< closest_number(10, 3)
6+
10
7+
<<< closest_number(10222, 5)
8+
10220
9+
<<< closest_number(152123123, 3213)
10+
152123121
11+
<<< closest_number(22234, 342)
12+
22236
13+
"""
14+
# Find the quotient
15+
# q = n // m
16+
q = int (n / m)
17+
18+
# First possible closest number
19+
n1 = m * q
20+
21+
# Second possible closest number
22+
if n * m > 0:
23+
n2 = m * (q + 1)
24+
else:
25+
n2 = m * (q - 1)
26+
27+
if abs(n - n1) < abs(n - n2):
28+
return n1
29+
return n2
30+
if __name__ == "__main__":
31+
from doctest import testmod
32+
testmod(verbose=True)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## closest_to_n_and_divisble_by_m Method
2+
- Iterative Checking
3+
- By finding Quotient

0 commit comments

Comments
 (0)