Sample Input
-1000000 9
Sample Output
-999,991
思路
通过 insert()
从后向前添加逗号
第一次提交:
错在逗号理解是从左到右三个一组,就很蠢,完全不符合实际
11998会被输出成119,98,这也太睿智了…明明就应该是从右往左三个一组,即11,998
第二次提交
int main(){
int a,b;
scanf("%d %d",&a,&b);
int sum = a+b;
string s = to_string(sum);
string ans;
if(abs(sum)<10000) {printf("%d",sum);return 0;}
if(sum<0){
s.erase(s.begin());
printf("-");
}
int len = s.length();
for(int i=len-1;i>=0;i--){
if((len-i)%3==0&&i!=0)
s.insert(i,",");
}
cout<<s;
return 0;
}
第10个测试点过不去
错在题目没审清
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).
题目上说是少于四位即三位及以下才不加逗号,我写的是四位也不加逗号,这就明显是题目没审清楚导致的!!!
真实考场上怎么办:再返回去重新读题目重新理解!以及最开始读题目的时候就不能马虎!
正解如下:
int main(){
int a,b;
scanf("%d %d",&a,&b);
int sum = a+b;
string s = to_string(sum);
string ans;
if(abs(sum)<1000) {printf("%d",sum);return 0;}
if(sum<0){
s.erase(s.begin());
printf("-");
}
int len = s.length();
for(int i=len-1;i>=0;i--){
if((len-i)%3==0&&i!=0)
s.insert(i,",");
}
cout<<s;
return 0;
}
要积累的知识点
to_string()
函数,可将int
转string