题目
1001 A+B Format (20)(20 分)
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).
Input
Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.
Output
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample Input
-1000000 9
Sample Output
-999,991
题目大意
计算A+B,A≥-1000000,B≤1000000,输出格式为从右往左每三位一个逗号
思路
通过取整取余运算,计算出每三位的数字是多少,再其中插入逗号输出
代码
#include<iostream>
#include <stdlib.h>
#include<iomanip>
#include <math.h>
using namespace std;
int main()
{
int a,b,s;
int s1,s2,s3,s4;
cin>>a>>b;
s = a+b;
s1 = s % 1000;
s2 = s / 1000 % 1000;
s3 = s / 1000000 %1000000;
s4 = s / 1000000000;
if(s4) {
s3 = abs(s3);
s2 = abs(s2);
s1 = abs(s1);
cout<<s4<<","<<setw(3)<<setfill('0')<<s3<<","<<setw(3)<<setfill('0')<<s2<<","<<setw(3)<<setfill('0')<<s1;
}
else if(s3) cout<<s3<<","<<setw(3)<<setfill('0')<<abs(s2)<<","<<setw(3)<<setfill('0')<<abs(s1);
else if(s2) cout<<s2<<","<<setw(3)<<setfill('0')<<abs(s1);
else cout<<s;
return 0;
}
问题
感觉这种方法比较笨,要知道最大位数有多少才能这么做。其实第一个思路是转化为字符串再处理的, 有时间再修改一下。