โจทย์
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
ตัวอย่าง
อินพุต:
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.
อินพุต:
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 กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน