1011 A+B 和 C (15 分)
题目描述:
给定区间 [−2^31 , 2^31 ] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。
输入格式:
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 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
解题思路:
根据题意,求出AB之和,再看判断和与C的大小即可。
代码:
def main():
n = int(input())
# 接收输入的整数
answer = []
# 列表,存储答案
for x in range(n):
data = [int(x) for x in input().split()]
# 接收输入的三个整数A B C
answer.append(data[0] + data[1] > data[2])
# data[0] + data[1] > data[2]是一个表达式,表达式是有值的,而它的值就是ture 或者 false
for x in range(n):
# 拼接出每个测试的答案对应的输出字符串
temp = "Case #{}: ".format(x + 1)
# 字符串的format方法可以用于格式化,一个直观的用法就是将字符串的指定部分替换为我们想要的内容。
# "Case #{}: ".format(x + 1)的意思就是将{}部分替换为x+1的值的对应字符串。如"Case #{}: ".format(0) -> "Case #0: "
if answer[x]:
# 拼接字符串后续的部分
temp += 'true'
else:
temp += 'false'
print(temp)
if __name__ == '__main__':
main()
- Java Version: 直接使用长整型啦
import java.util.Scanner;
import java.io.*;
public class Main{
public static void main(String[] args) {
// FileInputStream fis = null;
// try {
// fis = new FileInputStream("C:\\Users\\DELL\\eclipse-workspace\\01\\src\\in.txt");
// System.setIn(fis);
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
Scanner in = new Scanner(System.in);
long T = in.nextLong();
for(int i=0; i<T; ++i) {
long a = in.nextLong();
long b = in.nextLong();
long c = in.nextLong();
if (a + b > c) {
System.out.println(String.format("Case #%s: true", ""+(i + 1)));
}else {
System.out.println(String.format("Case #%s: false", ""+(i + 1)));
}
}
in.close();
}
}
易错点:
- 输出答案中的true 和 false 首字母都是小写,而Python 中 True 和 False 首字母都是大写。所以
temp += str(answer[x])
将会导致答案错误,而temp += str(answer[x]).lower()
会得到正确结果。这是因为字符串的lower()函数能够将字符串中的大写字符转换为小写字符,而答案中所要求的正是小写的“true” 和 “false”。
总结:
- 掌握处理字符串的常见方法能够speed up我们的编码速度。
- format格式化函数