PAT乙級1011

3060 ワード

区間[-2^31,2^31]内の3つの整数A,B,Cを与え、A+BがCより大きいか否かを判断してください.
入力形式:
1行目を入力すると正の整数T(<=10)が与えられ、試験例の個数である.次に、Tグループのテスト例が与えられ、各グループは1行を占め、A、B、およびCの順に与えられる.整数間はスペースで区切られます.
出力フォーマット:
各試験例のセットについて、1行に「Case#X:true」を出力A+B>Cの場合、そうでなければ「Case#X:false」を出力し、ここでXは試験例の番号である(1から).
入力サンプル:4 1 2 3 3 4 2147483647 0 2147483646 0-2174748648-2174748648-2174748647出力サンプル:Case 1:false Case 2:true Case 3:true Case 4:false
思想:実はもっと大きい长い整型でやることを考え始めて、最も长い整型はまだ32位で、无言で、それからまた3つの数を0から1の间の数に正规化することを考えて、しかしA+B=Cの时に问题が発生することを発见して、それから私はいっそ直接doubleのタイプに変えて、完璧に解决します.出題者の意図に合致しないと推定され、オーバーフローなどを考慮するかもしれないし、+2^31次側は整数では表示できないが、-2^31次側と同じマシンコードで表示されている.
C++基本データ型
#include 

using namespace std;
bool check(int A,int B,int C)
{
    double temp1 = ((double)A),temp2 = ((double)B),temp3 = ((double)C);

    if(temp1+temp2>temp3)
        return true;
    else
        return false;
}

int main()
{
    int T;
    cin>>T;
    int*a = new int[T];
    int*b = new int[T];
    int*c = new int[T];
    for(int i=0;icin>>a[i]>>b[i]>>c[i];
    for(int i=0;iif(check(a[i],b[i],c[i]))
        {
            cout<<"Case #"<1<<":"<<" true"<else
            cout<<"Case #"<1<<":"<<" false"<return 0;
}