File tree Expand file tree Collapse file tree 3 files changed +59
-0
lines changed
Logic Building/Find the number closest to n and divisible by m Expand file tree Collapse file tree 3 files changed +59
-0
lines changed Original file line number Diff line number Diff line change
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 )
Original file line number Diff line number Diff line change
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 )
Original file line number Diff line number Diff line change
1
+ ## closest_to_n_and_divisble_by_m Method
2
+ - Iterative Checking
3
+ - By finding Quotient
You can’t perform that action at this time.
0 commit comments