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:
// 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 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
# 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# 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 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.
?>
<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)