给定两个整数a和b,找出它们的乘积(axb)是否超过有符号的64位整数。如果超出打印,则打印其他。
例子:
Input : a = 100, b = 200
Output : No
Input : a = 10000000000,
b = -10000000000
Output : Yes
方法 :
- 如果任何一个数字为0,则它将永远不会超出范围。
- 否则,如果两者之积除以一个等于另一个,则也将在范围内。
- 在任何其他情况下,都会发生溢出。
C++
// CPP program to check for integer
// overflow on multiplication
#include
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
输出:
Yes
时间复杂度: O(1)