Open In App

Count pairs from a given range having even sum

Given two positive integers L and R, the task is to find the count of ordered pairs in the range [L, R] such that the sum of elements of each pair is even.

Examples:



Input: L = 1, R =3
Output: 5
Explanation:
Pairs whose sum of elements are even and lies in the range [1, 3] are { (1, 3), (1, 1), (2, 2), (3, 3), (3, 1) }

Input: L = 1, R = 1
Output: 1



 

Approach: The problem can be solved using the fact that the sum of two numbers is even only when both the numbers are even or both the numbers are odd. Follow the steps below to solve this problem:

Below is the implementation of the above approach:




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the count of
// ordered pairs having even sum
int countPairs(int L, int R)
{
 
    // Stores count of even numbers
    // in the range [L, R]
    int count_even;
 
    // If L is even
    if (L % 2 == 0) {
 
        // Update count_even
        count_even = (R / 2) - (L / 2) + 1;
    }
    else {
 
        // Update count_odd
        count_even = (R / 2) - (L / 2);
    }
 
    // Stores count of odd numbers
    // in the range [L, R]
    int count_odd;
    if (L % 2 == 0) {
 
        // Update count_odd
        count_odd = ((R + 1) / 2) - ((L + 1) / 2);
    }
    else {
 
        // Update count_odd
        count_odd = ((R + 1) / 2) - ((L + 1) / 2) + 1;
    }
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are also even
    count_even *= count_even;
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are odd
    count_odd *= count_odd;
 
    // Print total ordered pairs whose sum is even
    cout << count_even + count_odd;
}
 
// Driver Code
int main()
{
 
    // Given L & R
    int L = 1, R = 3;
 
    // Function Call
    countPairs(L, R);
 
    return 0;
}




// Java program for the above approach
class GFG
{
 
  // Function to find the count of
  // ordered pairs having even sum
  static void countPairs(int L, int R)
  {
 
    // Stores count of even numbers
    // in the range [L, R]
    int count_even;
 
    // If L is even
    if (L % 2 == 0)
    {
 
      // Update count_even
      count_even = (R / 2) - (L / 2) + 1;
    }
    else {
 
      // Update count_odd
      count_even = (R / 2) - (L / 2);
    }
 
    // Stores count of odd numbers
    // in the range [L, R]
    int count_odd;
    if (L % 2 == 0)
    {
 
      // Update count_odd
      count_odd = ((R + 1) / 2) - ((L + 1) / 2);
    }
    else
    {
 
      // Update count_odd
      count_odd = ((R + 1) / 2) - ((L + 1) / 2) + 1;
    }
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are also even
    count_even *= count_even;
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are odd
    count_odd *= count_odd;
 
    // Print total ordered pairs whose sum is even
    System.out.println(count_even + count_odd);
  }
 
  // Driver Code
  public static void main (String[] args)
  {
 
    // Given L & R
    int L = 1, R = 3;
 
    // Function Call
    countPairs(L, R);
  }
}
 
// This code is contributed by AnkThon




# Python3 program for the above approach
 
# Function to find the count of
# ordered pairs having even sum
def countPairs(L, R):
     
    # Stores count of even numbers
    # in the range [L, R]
    count_even = 0
 
    # If L is even
    if (L % 2 == 0):
         
        # Update count_even
        count_even = ((R // 2) -
                      (L // 2) + 1)
    else:
         
        # Update count_odd
        count_even = ((R // 2) -
                      (L // 2))
 
    # Stores count of odd numbers
    # in the range [L, R]
    count_odd = 0
     
    if (L % 2 == 0):
         
        # Update count_odd
        count_odd = (((R + 1) // 2) -
                     ((L + 1) // 2))
    else:
         
        # Update count_odd
        count_odd = (((R + 1) // 2) -
                     ((L + 1) // 2) + 1)
 
    # Stores count of pairs whose sum is
    # even and both elements of the pairs
    # are also even
    count_even *= count_even
 
    # Stores count of pairs whose sum is
    # even and both elements of the pairs
    # are odd
    count_odd *= count_odd
 
    # Print total ordered pairs whose
    # sum is even
    print (count_even + count_odd)
 
# Driver Code
if __name__ == '__main__':
 
    # Given L & R
    L, R = 1, 3
 
    # Function Call
    countPairs(L, R)
 
# This code is contributed by mohit kumar 29




// C# program for the above approach
using System;
class GFG
{
 
  // Function to find the count of
  // ordered pairs having even sum
  static void countPairs(int L, int R)
  {
 
    // Stores count of even numbers
    // in the range [L, R]
    int count_even;
 
    // If L is even
    if (L % 2 == 0)
    {
 
      // Update count_even
      count_even = (R / 2) - (L / 2) + 1;
    }
    else
    {
 
      // Update count_odd
      count_even = (R / 2) - (L / 2);
    }
 
    // Stores count of odd numbers
    // in the range [L, R]
    int count_odd;
    if (L % 2 == 0)
    {
 
      // Update count_odd
      count_odd = ((R + 1) / 2) - ((L + 1) / 2);
    }
    else
    {
 
      // Update count_odd
      count_odd = ((R + 1) / 2) - ((L + 1) / 2) + 1;
    }
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are also even
    count_even *= count_even;
 
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are odd
    count_odd *= count_odd;
 
    // Print total ordered pairs whose sum is even
    Console.WriteLine(count_even + count_odd);
  }
 
  // Driver Code
  public static void Main(String[] args)
  {
 
    // Given L & R
    int L = 1, R = 3;
 
    // Function Call
    countPairs(L, R);
  }
}
 
// This code is contributed by 29AjayKumar




<script>
 
// Javascript program of the above approach
 
// Function to find the count of
// ordered pairs having even sum
function countPairs(L, R)
{
 
    // Stores count of even numbers
    // in the range [L, R]
    let count_even;
     
    // If L is even
    if (L % 2 == 0)
    {
     
        // Update count_even
        count_even = (R / 2) - (L / 2) + 1;
    }
    else
    {
     
        // Update count_odd
        count_even = (R / 2) - (L / 2);
    }
     
    // Stores count of odd numbers
    // in the range [L, R]
    let count_odd;
    if (L % 2 == 0)
    {
         
        // Update count_odd
        count_odd = ((R + 1) / 2) -
                    ((L + 1) / 2);
    }
    else
    {
     
        // Update count_odd
        count_odd = ((R + 1) / 2) -
                    ((L + 1) / 2) + 1;
    }
     
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are also even
    count_even *= count_even;
     
    // Stores count of pairs whose sum is even and
    // both elements of the pairs are odd
    count_odd *= count_odd;
     
    // Print total ordered pairs whose sum is even
    document.write(count_even + count_odd);
}
 
// Driver Code
 
// Given L & R
let L = 1, R = 3;
 
// Function Call
countPairs(L, R);
 
// This code is contributed by avijitmondal1998
 
</script>

Output: 
5

 

Time Complexity: O(1)
Auxiliary Space: O(1)


Article Tags :