Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาความแตกต่างขั้นต่ำระหว่างตาราง Shifted ของตัวเลขสองตัวใน 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 :=gcd ของ (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