PAT 甲级 1001 A+B Format
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 −10^6 −106≤a,b≤ 1 0 6 10^6 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
结尾无空行
题意描述:
给你两个整数,用标准格式输出它们的和。
解题思路:
先计算和,然后进行位数的拆分,如果和为负数,那么还需要标记。最后的答案是字符串类型,因此在位数拆分的时候采用字符类型来存储,每三位后面还需要加上一个’,’,注意最后不需要加。最后如果和为负数,根据标记加上‘-’即可。
难度评测:Normal
AC代码实现:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int sum = a + b;
bool flag = false;
if(sum == 0) { // 特判
puts("0");
return 0;
}
if(sum < 0) {
flag = true;
sum = -sum;
}
vector<char>v;
int k = 0;
while(sum) {
v.push_back('0' + sum % 10);
sum /= 10;
if(++k % 3 == 0 && sum) {
v.push_back(',');
}
}
if(flag) v.push_back('-');
reverse(v.begin(), v.end());
for(int i = 0; i < v.size(); i++) cout << v[i];
}