[Python/Java](PAT)1001 A+B Format (20)

本文解析了一个PAT题目,要求计算两个整数的和,并以标准格式(每三位以逗号分隔)输出结果。提供了Python和Java两种语言的实现方式,详细解释了代码逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).

Input Specification:

Each input file contains one test case. Each case contains a pair of integers a and b where −10​6​​≤a,b≤10​6​​. The numbers are separated by a space.

Output Specification:

For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.

Sample Input:

-1000000 9

Sample Output:

-999,991

题目大意
    计算输入的A和B的和,按照每三位以','分割的格式输出
    把a+b的和转为字符串s。除了第一位是负号的情况,只要当前位的下标i满足(i + 1) % 3 == len % 3并且i不是最后一位,就在逐位输出的时候在该位输出后的后面加上一个逗号。

分析

使用python实现就直接相加然后格式化输出就可以了。

使用java实现,则先判断相加后是否是负数。是负数先输出负号。然后倒置字符串,每隔三个字符加一个逗号,且如果处于最后的位置则不用添加逗号。最后再翻转过来,输出即可。

python实现

if __name__ == "__main__":
    line = input().split(" ")
    a, b = int(line[0]), int(line[1])
    print('{:,}'.format(a+b))

 java实现

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] line = br.readLine().split(" ");
		br.close();
		int temp = Integer.valueOf(line[0]) + Integer.valueOf(line[1]);
		if(temp < 0){
			System.out.print("-");
		}
		String s = String.valueOf(Math.abs(temp));
		String a = new StringBuffer(s).reverse().toString();
		String get = "";
		for(int i=0;i<a.length();i++){
			get = get + a.charAt(i);
			if((i+1) %3 == 0 && i != a.length() - 1){
				get = get + ',';
			}
		}
		String out = new StringBuffer(get).reverse().toString();
		System.out.print(out);
	}
}

通过这个例子可以看出,如果不想用C/C++来写PAT的话,python也勉强可以考虑用来解题,但是java真的太慢了

https://www.amoshuang.com/patadvanced

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值