Check for integer overflow on multiplication
Given two integer a and b, find whether their product (a x b) exceed the signed 64 bit integer or not. If it exceed print Yes else print No.
Examples:
Input : a = 100, b = 200
Output : NoInput : a = 10000000000, b = -10000000000
Output : Yes
Approach :
- If either of the number is 0, then it will never exceed the range.
- Else if the product of the two divided by one equals the other, then also it will be in range.
- In any other case overflow will occur.
Below is the implementation of the above approach:
C++
// CPP program to check for integer // overflow on multiplication #include <iostream> using namespace std; // Function to check whether there is // overflow in a * b or not. It returns // true if there is overflow. bool isOverflow( long long a, long long b) { // Check if either of them is zero if (a == 0 || b == 0) return false ; long long result = a * b; if (a == result / b) return false ; else return true ; } // Driver code int main() { long long a = 10000000000, b = -10000000000; if (isOverflow(a, b)) cout << "Yes" ; else cout << "No" ; return 0; } |
Java
// Java program to check for integer // overflow on multiplication import java.util.*; import java.lang.*; public class GfG{ // Function to check whether there is // overflow in a * b or not. It // returns true if there is overflow. static Boolean isOverflow( long a, long b) { // Check if either of them is zero if (a == 0 || b == 0 ) return false ; long result = a * b; if (a == result / b) return false ; else return true ; } // driver function public static void main(String argc[]) { long a = Long.parseLong( "10000000000" ); long b = Long.parseLong( "-10000000000" ); if (isOverflow(a, b)) System.out.print( "Yes" ); else System.out.print( "No" ); } } // This code is contributed by Prerna Saini |
Python3
# Python program to check for integer # overflow on multiplication # Function to check whether there is # overflow in a * b or not. It returns # true if there is overflow. def isOverflow(a, b): # Check if either of them is zero if (a = = 0 or b = = 0 ) : return False result = a * b if (result > = 9223372036854775807 or result < = - 9223372036854775808 ): result = 0 if (a = = (result / / b)): print (result / / b) return False else : return True # Driver code if __name__ = = "__main__" : a = 10000000000 b = - 10000000000 if (isOverflow(a, b)): print ( "Yes" ) else : print ( "No" ) # This code is contributed # Shubham Singh(SHUBHAMSINGH10) |
C#
// C# program to check for integer // overflow on multiplication using System; public class GfG { // Function to check whether there is // overflow in a * b or not. It // returns true if there is overflow. static bool isOverflow( long a, long b) { // Check if either of them is zero if (a == 0 || b == 0) return false ; long result = a * b; if (a == result / b) return false ; else return true ; } // Driver function public static void Main() { long a = 10000000000; long b = -10000000000 ; if (isOverflow(a, b)) Console.WriteLine( "Yes" ); else Console.WriteLine( "No" ); } } // This code is contributed by vt_m |
PHP
<?php // PHP program to check for integer // overflow on multiplication // Function to check whether there is // overflow in a * b or not. It returns // true if there is overflow. function isOverflow( $a , $b ) { // Check if either of them is zero if ( $a == 0 || $b == 0) return false; $result = $a * $b ; if ( $a == (int) $result / $b ) return false; else return true; } // Driver code $a = 10000000000; $b = -10000000000; if (isOverflow( $a , $b )) echo "Yes" ; else echo "No" ; // This code is contributed by ajit. ?> |
Javascript
<script> // JavaScript program to check for integer // overflow on multiplication // Function to check whether there is // overflow in a * b or not. It returns // true if there is overflow. function isOverflow(a, b) { // Check if either of them is zero if (a == 0 || b == 0) return false ; var result = a*b; if (result >= 9223372036854775807 || result <= -9223372036854775808) result=0 if (a == parseInt(result / b)) return false ; else return true ; } // Driver code var a = 10000000000, b = -10000000000; if (isOverflow(a, b)) document.write( "Yes" ); else document.write( "No" ); </script> |
Output
Yes
Time complexity: O(1)
Auxiliary space: O(1)
Please Login to comment...