1.题目描述
int64 a b c 判断 a+b>c(考虑溢出问题)
2.解题思路
1.什么情况发生溢出?
两个正数相加;两个负数相加;(同号相加)
正数减负数;负数减正数;(异号相减)
2.分情况讨论
1)a,b异号(包括=0):a+b>c不会溢出,直接判断即可
2)a,b同号,c与a,b同号:转化为判断a>c-b,因为同号相减不会溢出
3)a,b同号,c与a,b异号:
负+负>正:return False
正+正>负:return True
3.代码实现
public static boolean compareMaxMin(int A,int B,int C)
{
//问题难点在于输入是一个属于int类型范围的整数
//但是两个整数相加可能会导致溢出的情况
//需要解决溢出问题 同号相加 异号相减
if((A>0&&B>0)||(A<0&&B<0))//A、B同号
{
//C和AB同号
if((A>0&&C>=0)||(A<0&&C<=0))
{
if(A>C-B)
return true;
else
return false;
}
//C和AB异号
else {
if(A>0)
return true;
else
return false;
}
}
else //A、B异号 或者存在A或B=0 0不会造成溢出
{
//直接比较
if(A+B>C)
return true;
else {
return false;
}
}
}
————————————————
版权声明:本文为CSDN博主「枯树下的幻想」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43823363/article/details/86615699