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 zerovoid 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 codeint main(){ int a = -10, b = -2; solve(a, b); return 0;} |
Java
// Java implementation of the approachimport java.io.*;class GFG {// Function to check whether the product// of integers of the range [a, b]// is positive, negative or zerostatic 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 zerodef 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 codeif __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 zerofunction 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> |
Negative
Time Complexity: O(1), as there is no loop.
Auxiliary Space: O(1), as no extra space is required.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
