Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับจำนวนเลขคี่ในช่วงกำหนดด้วย Python


ภาพรวม

ให้เลขจำนวนเต็มบวก 2 จำนวน left และ right ต้องการนับจำนวนเลขคี่ในช่วง [left, right] รวมปลาย

ตัวอย่าง

left = 3, right = 15

เลขคี่: [3,5,7,9,11,13,15] → รวม 7 ตัว

ขั้นตอนการแก้ปัญหา (สูตรคณิตศาสตร์)

  1. ถ้า left เป็นคี่ หรือ right เป็นคี่:
    • คืนค่า 1 + (right - left) // 2
  2. มิฉะนั้น (ทั้งคู่เป็นเลขคู่):
    • คืนค่า (right - left) // 2

เหตุผล

ในช่วงที่มีจำนวนตัวเลข n ตัว จะมีเลขคี่ประมาณครึ่งหนึ่ง หากปลายทั้งสองเป็นคู่ จำนวนเลขคี่ = n//2 หากมีปลายคี่อย่างน้อย 1 ด้าน จะมีเลขคี่มากกว่าครึ่งหนึ่ง 1 ตัว

ตัวอย่างโค้ด (Python)

def solve(left, right):
    if left % 2 == 1 or right % 2 == 1:
        return (right - left) // 2 + 1
    else:
        return (right - left) // 2

left = 3
right = 15
print(solve(left, right))

อินพุต

3, 15

เอาต์พุต

7

ความซับซ้อน

  • เวลา: O(1)
  • พื้นที่: O(1)