โจทย์: กำหนด Range [l, u] ตรวจสอบว่าผลคูณ Integer ทุกตัวใน Range เป็น Positive, Negative หรือ Zero
ตัวอย่าง
l = -8, u = -2 → Range: -8,-7,-6,-5,-4,-3,-2 → Product = -40320 → Negative
อัลกอริทึม (O(1) Math)
- ถ้า l > 0 และ u > 0 → Positive (ทั้งหมดบวก)
- ถ้า l ≤ 0 และ u ≥ 0 → Zero (มี 0 อยู่ใน Range)
- กรณี l < 0 และ u < 0 (ทั้งคู่อิด):
- n = |l - u| + 1 (จำนวนตัว)
- ถ้า n เป็น Even → Positive (Negative × Negative = Positive, จำนวนคู่)
- ถ้า n เป็น Odd → Negative
โค้ดตัวอย่าง
def solve(l, u):
if l > 0 and u > 0:
return "Positive"
elif l <= 0 and u >= 0:
return "Zero"
else:
n = abs(l - u) + 1
if n % 2 == 0:
return "Positive"
return "Negative"
l = -8
u = -2
print(solve(l, u))
Input / Output
Input: -8, -2 Output: Negative