目录
题目描述
大致就是先算a+b,然后对这个输出结果进行分组,每三个数为一组,然后用逗号隔开。
如果计算结果小于四位数就不用做分组处理了。
代码
#include<iostream>
#include<string>
using namespace std;
/*
2022/11/26
已AC 得分20
主要是字符串的处理,有个坑,就是它3个数一组,是从后面开始
我一开始就是前面开始分组,结果一直过不了 比如这样:100,9
实际要的是1,009
*/
int main(){
long a,b;
int count = 0;
bool flag = false;
cin>>a>>b;
long sum = a+b;
if(sum==0){
cout<<sum<<endl;
return 0;
}else if(sum<0){
flag = true;
sum = sum*(-1);
}
string data = "" + to_string(sum);
string result = "";
int length = data.length();
int index = length-1;
//格式化,每3个字符加个逗号。
while(index>=0){
count++;
result = data[index] + result;
if(count%3==0&&index!=0){
result = "," + result;
}
index--;
}
if(flag){
result = "-" + result;
}
cout<<result<<endl;
return 0;
}
因为好久不写c++了,好多与字符串处理相关的内容都忘了,还是java弄这方面比较顺手。(可能因为用的比较多吧...)
注意
我一开始就是没仔细看,我以为它3个数一组是从前面开始数的,比如:100,9这样,所以第一次提交就错了,只得了14分。因为它给的测试用例是个非常特殊的,一共六位,所以你从前面开始还是从后面开始都一样能过他这个例子,我就被误导了呜呜。
他的实际要求是从低位向高位分组,比如:1009---------1,009。