题目链接:
题目描述:
算法分析:
如你不能拿全该题的分数,且和我第一次做一样感觉自己逻辑没有问题的话,那么十有八九题目意思理解错了,它的要求不只是仅仅要求将 a+b 的和按每个 3 个数字用一个“逗号”分隔开,而是要求按照我们数钱时的操作将其通过逗号分隔开,举个例子:
1111 应该是 1,111
10000 应该是 10,000
999999 应该是 999,999
1999999 应该是 1,999,999
像这样,以此类推...
而这样的话,正序就不太方便处理,我们可以先将 a+b 的和转换成字符串,然后逆序存入答案中,并在存入的过程中在适当的位置添加逗号,最后再 将答案的字符反转一下输出即可。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int sum = a + b;
// 负数转正数
if(sum<0){
cout << "-";
sum = -sum;
}
string result;
// 数字变成字符串
string numStr = to_string(sum);
int len = numStr.length();
//计数是第几个字符了
int cnt = 0;
for (int i = len - 1; i >= 0; i--) {
result += numStr[i];
cnt++;
//如果计数到是 3 的倍数个的字符且不是最后一个字符,则在其后面添加一个 “逗号” 分隔开
if (cnt%3 == 0 && i!=0) {
result += ',';
}
}
// 反转字符串
reverse(result.begin(), result.end());
cout << result << endl;
return 0;
}