Describe
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的值,且每次测试数据只有一组,难点在于输出。输出格式时英式的格式1,000,000之类的。所以我们对输出的数字进行处理,最后输出字符串。暴力解法: 每次除1000,直到为0,每次进行字符串处理。
#include<iostream>
#include<sstream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int sum = n+m;
string s="";
bool ok = false;
if(sum==0) {cout<<0<<endl;return 0;}
//对结果进行处理
while(sum){
int c = sum;
if(c<0) ok = true;
sum = abs(sum);
c = abs(c);
stringstream ss;
if(c>=1000){
int b = c%1000;
ss<<b;
string str;
ss>>str;
while(str.length()<3) str = "0" + str;
s = (","+str)+s;
}else{
ss<<c;
string str;
ss>>str;
s = (str)+s;
}
sum /= 1000;
}
if(ok) cout<<"-"<<s<<endl;
else cout<<s<<endl;
return 0;
}