原文链接:PAT-甲级-1001
题目大意:
题目很简单,就是计算两个数的和,然后按格式化输出。如计算-1000000,9则输出:-999,991
解题思路:
先计算a,b之和,为了方便格式化输出,如果是负数的话,就是先输出‘-’,然后取相反数,这样所有和都变成了正数。然后将整数转换为字符串。之后按字符顺序输出,输出过程中如果 len - i % 3 ==0 && i!=0 //len为字符串长度,i是当前字符的下标
,即剩余的字符个数是3的整数倍则需要输出’,’。需要注意的时候要求i!=0
是为了防止数字是三位的时候输出’,’ 。
代码:
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
int sum = a + b;
if(sum < 0){
cout << "-";
sum = -sum;
}
stringstream ss;
ss << sum;
string s;
s = ss.str();
int len = s.length();
int num = len;
if (a + b < 0) num++;
for (int i = 0; i < len; i++) {
if ((len - i) % 3 == 0 && i != 0) cout << ",";
cout << s[i];
}
cout << endl;
return 0;
}
测试数据:
1 1
10 1
100 1
1000 1
10000 1
100000 1
1000000 1
1000000 1000000
-1 1
-10 1
-100 1
-1000 1
-10000 1
-100000 1
-1000000 1