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

Count Odd and Even numbers in a range from L to R in C++

กำหนดช่วง [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