ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

Least Common Multiple

Find the smallest positive number divisible by both values.

สิ่งที่คุณจะได้เรียนรู้

  • Compute the LCM from the GCD
  • Avoid overflow by dividing before multiplying
  • Reuse one function inside another

โจทย์

ดูฉบับแปล

Return the least common multiple of a and b, the smallest positive number that both divide. lcm(a, b) = a / gcd(a, b) × b.

Implement lcm(a, b).

Input

a: The first positive number. b: The second positive number.

Output

Return lcm(a, b).

เงื่อนไข

1 ≤ a, b ≤ 1,000,000,000

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
a = 4
b = 6

ผลลัพธ์ที่คาดหวัง:
expected = 12
อินพุต:
long long a = 4;
long long b = 6;

ผลลัพธ์ที่คาดหวัง:
long long expected = 12;
อินพุต:
long a = 4;
long b = 6;

ผลลัพธ์ที่คาดหวัง:
long expected = 12;

คำอธิบาย

Multiples of 4: 4, 8, 12…; multiples of 6: 6, 12…; the first common one is 12.

ตัวอย่างที่ 2
อินพุต:
a = 7
b = 7

ผลลัพธ์ที่คาดหวัง:
expected = 7
อินพุต:
long long a = 7;
long long b = 7;

ผลลัพธ์ที่คาดหวัง:
long long expected = 7;
อินพุต:
long a = 7;
long b = 7;

ผลลัพธ์ที่คาดหวัง:
long expected = 7;

คำอธิบาย

A number's LCM with itself is the number: 7.

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

Use the relationship between gcd and lcm instead of searching for multiples.

คำใบ้ 2

Compute the gcd first, then combine the two numbers carefully.

คำใบ้ 3

Divide before multiplying to reduce overflow risk, even with large inputs.

ความซับซ้อนที่คาดหวัง

O(log min(a, b)) time, O(1) extra space

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก