ปัญหา
ให้อาร์เรย์ nums ตรวจสอบว่ามันเป็นชุดตัวหารครบของจำนวนเต็มบางจำนวนหรือไม่
ตัวอย่าง
nums = [1, 2, 3, 4, 6, 8, 12, 24] → เป็นตัวหารของ 24 → True
แนวคิดการแก้ปัญหา
- หาค่าสูงสุดในอาร์เรย์ (เป็นตัวเลขที่ต้องการ)
- หาตัวหารทั้งหมดของค่าสูงสุดนั้น
- เปรียบเทียบชุดตัวหารกับอาร์เรย์ต้นฉบับ (เรียงลำดับก่อนเปรียบเทียบ)
โค้ดตัวอย่าง
from math import sqrt
def solve(nums):
maximum = max(nums)
temp = []
for i in range(1, int(sqrt(maximum)) + 1):
if maximum % i == 0:
temp.append(i)
if i != maximum // i:
temp.append(maximum // i)
if len(temp) != len(nums):
return False
return sorted(temp) == sorted(nums)
print(solve([1, 2, 3, 4, 6, 8, 12, 24])) # True
อินพุต / เอาต์พุต
Input: [1, 2, 3, 4, 6, 8, 12, 24] Output: True