দুটি পূর্ণসংখ্যা L এবং R দেওয়া আছে। L থেকে R পর্যন্ত (ইনক্লুসিভ) কতটি জোড় এবং কতটি বিজোড় সংখ্যা আছে তা বের করুন।
উদাহরণ
L=7, R=17 → জোড়: 5, বিজোড়: 6
L=1, R=10 → জোড়: 5, বিজোড়: 5
গাণিতিক সূত্র (O(1))
মোট সংখ্যা = R - L + 1
- যদি মোট সম হয়: জোড় = বিজোড় = মোট/২
- যদি মোট বিজোড় হয়:
- L জোড় হলে: জোড় = মোট/২ + ১, বিজোড় = মোট/২
- L বিজোড় হলে: বিজোড় = মোট/২ + ১, জোড় = মোট/২
C++ বাস্তবায়ন
#include
using namespace std;
pair countOddEven(int L, int R) {
int total = R - L + 1;
int even = total / 2;
int odd = total / 2;
if (total % 2 == 1) {
if (L % 2 == 0) even++;
else odd++;
}
return {even, odd};
}
int main() {
int L = 7, R = 17;
auto [even, odd] = countOddEven(L, R);
cout << "Even: " << even << ", Odd: " << odd;
return 0;
}
লুপ ভিত্তিক পদ্ধতি (O(R-L))
int Odd_Even(int L, int R) {
int even = 0;
for (int i = L; i <= R; i++)
if (i % 2 == 0) even++;
return even;
}
সামान्य规律
যেকোনো আদি কনsekutিভ পূর্ণসংখ্যা রেঞ্জে জোড় ও বিজোড়ের পার্থক্য সর্বোচ্চ ১ হতে পারে।