Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

Given two integers a and b, the task is to check whether the product of integers from the range 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++




// 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;
}


Java




// 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..


Python3




# 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


C#




// 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


Javascript




<script>
 
// Javascript  implementation of the approach
 
// Function to check whether the product
// of integers of the range [a, b]
// is positive, negative or zero
function  solve( a,  b)
{
 
    // If both a and b are positive then
    // the product will be positive
    if (a > 0 && b > 0)
    {
        document.write( "Positive");
    }
 
    // If a is negative and b is positive then
    // the product will be zero
    else if (a <= 0 && b >= 0)
    {
        document.write( "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
        let  n = Math.abs(a - b) + 1;
 
        // If n is even then the resultant
        // product is positive
        if (n % 2 == 0)
        {
            document.write( "Positive");
        }
         
        // If n is odd then the resultant
        // product is negative
        else
        {
            document.write( "Negative");
        }
    }
}
 
    // Driver code
     
        let a = -10;
        let b = -2;
     
        solve(a, b);
 
 
// This code is contributed by Bobby
 
</script>


Output: 

Negative

 

Time Complexity: O(1), as there is no loop.
Auxiliary Space: O(1), as no extra space is required.



Last Updated : 16 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads