PAT 乙级 1011.A+B 和 C C++/Java
给定区间 [−] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。
输入格式:
输入第 1 行给出正整数 T (≤),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出 Case #X: true
如果 A+B>C,否则输出 Case #X: false
,其中 X
是测试用例的编号(从 1 开始)。
输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
分析:
考虑变量类型的取值范围,使用长整型
C++实现:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int T; 7 cin >> T; 8 long A, B, C; 9 for (int i = 1; i <= T; ++i) 10 { 11 cin >> A >> B >> C; 12 if (A + B > C) 13 { 14 cout << "Case #" << i << ": true" << endl; 15 } 16 else 17 { 18 cout << "Case #" << i << ": false" << endl; 19 } 20 } 21 return 0; 22 }
Java实现:
1 import java.util.Scanner; 2 3 public class Main{ 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int T = input.nextInt(); 7 double[] a = new double[T]; 8 double[] b = new double[T]; 9 double[] c = new double[T]; 10 for (int i = 0; i < T; i++) { 11 a[i] = input.nextDouble(); 12 b[i] = input.nextDouble(); 13 c[i] = input.nextDouble(); 14 } 15 int j = 0; 16 for (int i = 0; i < T; i++) { 17 j = i + 1; 18 if (a[i] + b[i] > c[i]) { 19 System.out.println("Case #" + j + ": true"); 20 } else System.out.println("Case #" + j + ": false"); 21 } 22 } 23 }