原题
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 ≤ a, b ≤
. 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,其中 ≤ a, b ≤
, 数字之间用空格隔开。
输出规范:
对于每个测试用例,应在一行中输出 a 和 b 的总和,和必须以标准格式书写。
解题思路
考察字符串处理。由于需要加入逗号, 考虑用字符串来储存a + b。逗号是从低位到高位每隔3位输出一次,考虑倒序存入ans中并倒序输出。注意当a + b < 0时要判断第一位是否为- , 否则可能会出现"-,100,000"此类错误。
代码(c++)
#include <bits/stdc++.h>
using namespace std;
int a, b;
string str, ans;
int main()
{
cin >> a >> b;
str = to_string(a + b);
int count = 0; // 确认是否加","
for(int i = str.size() - 1; i >= 0; i--){
count++;
ans += str[i];
if(count % 3 == 0 && i && str[i - 1] != '-') ans += ","; // 倒序添加到ans中
}
for(int i = ans.size() - 1; i >= 0; i--) cout << ans[i]; // 倒序输出ans, 此时为正序
return 0;
}