ปัญหา
จำนวนออเร (Ore Number) คือ จำนวนที่ค่าเฉลี่ยฮาร์โมนิกของตัวหารทั้งหมดเป็นจำนวนเต็ม
ตัวอย่าง
n = 28 → ตัวหาร: 1,2,4,7,14,28 (6 ตัว)
ฮาร์โมนิก = 6 / (1/1+1/2+1/4+1/7+1/14+1/28) = 6 / (2) = 3 → เป็นจำนวนเต็ม → True
แนวคิดการแก้ปัญหา
- หาตัวหารทั้งหมดของ n
- คำนวณค่าเฉลี่ยฮาร์โมนิก:
H = count / sum(n/d) - ตรวจสอบว่า H เป็นจำนวนเต็ม
โค้ดตัวอย่าง
def get_divisors(n):
divs = []
for i in range(1, int(n**0.5)+1):
if n % i == 0:
divs.append(i)
if i != n // i:
divs.append(n // i)
return divs
def harmonic_mean(n):
divs = get_divisors(n)
total = sum(n / d for d in divs)
return len(divs) / (total / n)
def solve(n):
mean = harmonic_mean(n)
return mean == int(mean)
print(solve(28)) # True
อินพุต / เอาต์พุต
Input: 28 Output: True