在 Python 中查詢兩個數字的移位表之間的最小差值


假設我們有兩個數字 p 和 q,我們需要找到 p 和 q 的無限移位表中任意項之間的最小差值,這些移位分別為 r 和 s,其中 r、s >= 0。

因此,如果輸入類似於 p = 7 和 q = 17,r = 6 和 s = 3,則輸出將為 0,因為 7 的倍數表為 [7, 14, 21, 28, 35, 42, 49, ...],而 17 的倍數表為 [17, 34, 51, 68, 85, 102, 119, ...],則 7 的移位表將為 [13, 20, 27, 34, 41, 48, 55, ...],而 17 的移位表將為 [20, 37, 54, 71, 88, 105, 121, ...],則這些移位表中兩項之間的最小差值為 20-20 = 0。

為了解決這個問題,我們將遵循以下步驟:

  • g := (p, q) 的最大公約數

  • 差值 := |r-s| mod g

  • 返回差值和 g - 差值中的最小值

示例

讓我們看看以下實現以更好地理解:

import math
def get_minimum_diff (p, q, r, s):
   g = math.gcd(p,q)
   difference = abs(r-s) % g
   return min(difference, g - difference)
p = 7
q = 17
r = 6
s = 3
print(get_minimum_diff(p, q, r, s))

輸入

7,17,6,3

輸出

0

更新於: 2020年8月20日

110 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.