一、原题
1001 A+B Format (20 分)
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
−
1
0
6
≤
a
,
b
≤
1
0
6
-10^6 ≤a,b≤10^6
−106≤a,b≤106 . 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
二、题目要点
- 属于字符串处理问题
- 输入比较简单,通过stoi()容易转换成数字
- 输出结果通过to_string()转换为字符串,并需要从尾开始每三位加逗号,而输出计数方法不可用,需要直接在结果字符串上操作
三、过程记录
- 错误记录
- 第一次想用for循环处理数组,通过计数器判断是否输出逗号,但是问题在于字符串顺序和要判断的顺序是反的。不过处理了负数的负号问题。
- 第二次从尾部开始处理,但是输出的顺序和标准顺序是反的
- 第三次想法是从尾部开始处理,处理结果放在另一个string里,输出再从尾开始,相对麻烦
- 注意到sring有插入函数,可以从尾部计数,按位置插入逗号。遇到的主要问题是,当前判断和当前处理是在同一个字符串上,所以计数下标在每次插入逗号后实际上已经发生改变,需要多-1,以指向正确的下一个原本字符。处理完成后可以直接输出。