# 1001. A+B Format (20)

400 ms

65536 kB

16000 B

Standard

CHEN, Yue

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

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.

Output

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

AC代码：

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(int argc, const char * argv[]) {
int a, b, sum;
cin >> a >> b;
sum = a + b;

string str;
str = to_string(sum);
if(str[0] == '-') {
cout << '-';
str.erase(0,1);
}
reverse(str.begin(), str.end() );
int len = (int)str.size();
for(int i = 3; i < len; i += 3) {
str.insert(i, ",");
i++;
len++;
}
reverse(str.begin(), str.end() );
cout << str << endl;
return 0;
}

## string字符串操作：

• erase
原型：
（1）string& erase ( size_t pos = 0, size_t n = npos );
（2）iterator erase ( iterator position );
（3）iterator erase ( iterator first, iterator last );
用法：
（1）erase(pos,n); 删除从pos开始的n个字符，比如erase(0,1)就是删除第一个字符
（2）erase(position);删除position处的一个字符(position是个string类型的迭代器)
（3）erase(first,last);删除从first到last之间的字符（first和last都是迭代器）

• insert
原型：
string &insert(int p0, const char *s);
string &insert(int p0, const char *s, int n);
string &insert(int p0,const string &s);
string &insert(int p0,const string &s, int pos, int n);
//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
iterator insert(iterator it, char c);//在it处插入字符c，返回插入后迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first，last）之间的字符
void insert(iterator it, int n, char c);//在it处插入n个字符c

• to_string函数 C++11 新增方法
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val)

• reverse函数
数组转置 reverse(v.begin(),v.end())

//
//  main.cpp
//  pat
//
//  Created by yaojies on 16/8/16.
//

#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, const char * argv[]) {
int numA, numB, result;
void functionOfPrint(int result);
cin >> numA >> numB;
result = numA + numB;
//print "-" if result < 0
if(result<0){
cout << "-";
result = -result;
}
functionOfPrint(result);
cout << endl;
return 0;
}
void functionOfPrint(int result){
if(result>999){
functionOfPrint(result/1000);
cout << ",";
cout << setfill('0')<<setw(3) << result%1000;
}else{
cout << result;
}
}