zoukankan      html  css  js  c++  java
  • PAT A1065 A+B and C (64bit) (20分)

    看似简单但是,需要考虑溢出的情况,有正溢出和负溢出。

    因为A,B,C的范围为[-263,263],而long long的取值范围为[-263,263],所以相加会存在溢出的问题 注意A+B必须存放到longlong型变量后才能与C比较,否则会造成数据计算的错误

    1,当A+B>=2^63时,显然A+B>C成立,但是A+B会超过long long的最大值,发生溢出,而A、B的最大值为263-1,所以A+B的最大值为264-2,所以使用long long存储后后溢出的值的区间为[-263,-2],【-2=(264-2)%2^64】

    2,当A+B<-2^63时,显然A+B<C成立,但是A+B会超过long long的最大值,发生溢出,而A、B的最小值为-263,所以A+B的最小值为-264,所以使用long long存储后溢出的值的区间为[0,263),【0=(-264)】%2^64】
    注意这个零,第三个测试点卡这个地方。

    #include<cstdio>
    using namespace std;
    int main(){
        long long A,B,C;
        int n;
        scanf("%d",&n);
        bool flag;
        for(int i = 1;i<=n;i++){
            scanf("%lld %lld %lld",&A,&B,&C);
            long long res = A+B;
            if(A>0&&B>0&&res<0) flag = true;
            else if(A<0&&B<0&&res>=0) flag = false;
            else if(res>C) flag = true;
            else flag = false;
            if(flag==true){
                printf("Case #%d: true
    ",i);
            }else{
                printf("Case #%d: false
    ",i);
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Actioin<T>委托
    StructLayout特性、、、MashalAs
    ibatis.net存储过程:SqlParameterCollection 中未包含带有 ParameterName“@”的 SqlParamer
    Jquery扩展方法
    XML学习
    CSS实现文字阴影
    FTP概述
    Ajax使用PageMethods调用后台方法
    JSP连接SQL2008
    Ajax Sys.UI.DomElement学习
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13599553.html
Copyright © 2011-2022 走看看