Check whether product of integers from a to b is positive , negative or zero

Given two integers a and b, the task is to check whether the product of integers from the rage v[a, b] i.e. a * (a + 1) * (a + 2) * … * b is positive, negative or zero.

Examples:

Input: a = -10, b = -2
Output: Negative



Input: a = -10, b = 2
Output: Zero

Naive approach: We can run a loop from a to b and multiply all the numbers starting from a to b and check whether the product is positive negative or zero. This solution will fail for large values of a and b and will result in overflow.

Efficient approach: There are three possible case:

  1. If a > 0 and b > 0 then the resultant product will be positive.
  2. If a < 0 and b > 0 then the result will be zero as a * (a + 1) * … * 0 * … (b – 1) * b = 0.
  3. If a < 0 and b < 0 then the result will depend on the count of numbers (as all the numbers are negative)
    • If the count of negative numbers is even then the result will be positive.
    • Else the result will be negative.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <iostream>
using namespace std;
  
// Function to check whether the product
// of integers of the range [a, b]
// is positive, negative or zero
void solve(long long int a, long long int b)
{
  
    // If both a and b are positive then
    // the product will be positive
    if (a > 0 && b > 0) {
        cout << "Positive";
    }
  
    // If a is negative and b is positive then
    // the product will be zero
    else if (a <= 0 && b >= 0) {
        cout << "Zero" << endl;
    }
  
    // If both a and b are negative then
    // we have to find the count of integers
    // in the range
    else {
  
        // Total integers in the range
        long long int n = abs(a - b) + 1;
  
        // If n is even then the resultant
        // product is positive
        if (n % 2 == 0) {
            cout << "Positive" << endl;
        }
        // If n is odd then the resultant
        // product is negative
        else {
            cout << "Negative" << endl;
        }
    }
}
  
// Driver code
int main()
{
    int a = -10, b = -2;
  
    solve(a, b);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
import java.io.*;
  
class GFG 
{
  
// Function to check whether the product
// of integers of the range [a, b]
// is positive, negative or zero
static void solve(long a, long b)
{
  
    // If both a and b are positive then
    // the product will be positive
    if (a > 0 && b > 0
    {
        System.out.println( "Positive");
    }
  
    // If a is negative and b is positive then
    // the product will be zero
    else if (a <= 0 && b >= 0)
    {
        System.out.println( "Zero" );
    }
  
    // If both a and b are negative then
    // we have to find the count of integers
    // in the range
    else 
    {
  
        // Total integers in the range
        long n = Math.abs(a - b) + 1;
  
        // If n is even then the resultant
        // product is positive
        if (n % 2 == 0
        {
            System.out.println( "Positive");
        }
          
        // If n is odd then the resultant
        // product is negative
        else
        {
            System.out.println( "Negative");
        }
    }
}
  
    // Driver code
    public static void main (String[] args) 
    {
        int a = -10, b = -2;
      
        solve(a, b);
    }
}
  
// This code is contributed by anuj_67..

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 implementation of the approach
  
# Function to check whether the product
# of integers of the range [a, b]
# is positive, negative or zero
def solve(a,b):
      
    # If both a and b are positive then
    # the product will be positive
    if (a > 0 and b > 0):
        print("Positive")
  
    # If a is negative and b is positive then
    # the product will be zero
    elif (a <= 0 and b >= 0):
        print("Zero")
  
    # If both a and b are negative then
    # we have to find the count of integers
    # in the range
    else:
          
        # Total integers in the range
        n = abs(a - b) + 1
  
        # If n is even then the resultant
        # product is positive
        if (n % 2 == 0):
            print("Positive")
              
        # If n is odd then the resultant
        # product is negative
        else:
            print("Negative")
  
# Driver code
if __name__ == '__main__':
    a = -10
    b = -2
  
    solve(a, b)
      
# This code is contributed by
# Surendra_Gangwar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach 
using System;
  
class GFG 
      
    // Function to check whether the product 
    // of integers of the range [a, b] 
    // is positive, negative or zero 
    static void solve(long a, long b) 
    
      
        // If both a and b are positive then 
        // the product will be positive 
        if (a > 0 && b > 0) 
        
            Console.WriteLine( "Positive"); 
        
      
        // If a is negative and b is positive then 
        // the product will be zero 
        else if (a <= 0 && b >= 0) 
        
            Console.WriteLine( "Zero" ); 
        
      
        // If both a and b are negative then 
        // we have to find the count of integers 
        // in the range 
        else
        
      
            // Total integers in the range 
            long n = Math.Abs(a - b) + 1; 
      
            // If n is even then the resultant 
            // product is positive 
            if (n % 2 == 0) 
            
                Console.WriteLine( "Positive"); 
            
              
            // If n is odd then the resultant 
            // product is negative 
            else
            
                Console.WriteLine( "Negative"); 
            
        
    
      
    // Driver code 
    public static void Main () 
    
        int a = -10, b = -2; 
      
        solve(a, b); 
    }
}
  
// This code is contributed by AnkitRai01

chevron_right


Output:

Negative


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.