กำหนดช่วง [L, R] นับจำนวนเลขคู่และเลขคี่ในช่วงนี้
ตัวอย่าง: L=7, R=17 → Even: 5, Odd: 6
วิธีแก้ปัญหา (O(1) Formula)
จำนวนเต็มในช่วง = R - L + 1
- ถ้าจำนวนรวมเป็นคู่: Even = Odd = รวม/2
- ถ้าจำนวนรวมเป็นคี่: หนึ่งในคู่/คี่ จะมากกว่าอีกด้าน 1 ขึ้นอยู่กับ L
สูตร: even = (R/2) - ((L-1)/2), odd = (R - L + 1) - even
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
pair countOddEven(int L, int R) {
int even = R/2 - (L-1)/2;
int total = R - L + 1;
int odd = total - even;
return {even, odd};
}
int main() {
auto [even, odd] = countOddEven(7, 17);
cout << "Even: " << even << ", Odd: " << odd;
}
Input
L=7, R=17
Output
Even: 5, Odd: 6