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++基本データ型
入力形式:
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;
}