题目描述
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).
输入描述:
Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.
输出描述:
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.
输入例子:
-1000000 9
输出例子:
-999,991
题目分析思路
本题是简单的实现两个数相加,然后格式化输出结果。由于要考虑正负号,而且输出时要从后往前每3个数加逗号,所以采用string来实现。首先通过循环把相加结果的数逆序存在字符串中,对字符串添加逗号,最后再把字符串翻转过来,即可达到正确结果。
代码实现(C++版本)
#include <iostream>
#include <cmath>
using namespace std;
string reverseStr(string a,int sign){
string b = "";
string temp = "";
for(int i =0;i<a.length();i++){
temp+=a[i];
if(i%3==2 && i!=a.length()-1)
temp+=",";
}
if(sign==0){
temp+="-";
}
for(long i = temp.length()-1; i>=0; i--){
b += temp[i];
}
return b;
}
int main()
{
int a , b;
cin >> a >> b;
int c = a+b;
int sign = 0;
if (c >= 0)
sign =1;
else
sign = 0;
c = abs(c);
string out = "";
while(c!=0){
int temp = c%10;
out += static_cast<char>(temp + '0');
c = c/10;
}
out =reverseStr(out,sign);
cout << out<<endl;
return 0;
}