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 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:
- If a > 0 and b > 0 then the resultant product will be positive.
- If a < 0 and b > 0 then the result will be zero as a * (a + 1) * … * 0 * … (b – 1) * b = 0.
- 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.
Please Login to comment...