问题大意:计算a+b,并以一定格式输出。格式是每三位以逗号分开,除非不足四位直接输出。a和b都是大于等于-1000000小于等于1000000。
思路:从a,b范围看来用int完全可以满足计算要求,由于我个人在可以不用字符的情况下就不用字符的懒惰,所以一开始就是奔着只用int去的。将结果抛去正负之分,可以分为三类:一,小于1000,即可以直接输出;二大于等于1000000,即有两个逗号;三在1000和999999之间的,即只有一个逗号。测试时可以挑三类中间的数字。为减少重复计算(其实也没有重复哪去,)我将结果sum分为两部分高三/四位left和低三位right。
代码(c++):
#include<iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int sum;
sum = a + b;
int left;//高3/4位
int right;//低三位
if (sum < 0) {
cout << "-";
sum = (-1) * sum;
}
left = sum / 1000;
right = sum % 1000;
if (sum<1000) {//sum小于1000,直接输出
printf("%d\n", sum);
}
else if(sum >=1000000){
printf("%d,%03d,%03d\n", left / 1000, left % 1000, right);
}
else {
printf("%d,%03d\n", left, right);
}
return 0;
}
结果:
![](https://i-blog.csdnimg.cn/blog_migrate/3eaff3a2adb059f826621b4745a2d934.png)