1001 A+B Format (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 Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −1e6 ≤a,b≤1e6 . The numbers are separated by a space.
Output Specification:
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输出完事,实际上看看他的输出,每三位一个分隔符。
- 分三部分:正数,负数还有0(c=a+b)。
- c=0,直接输出0,没啥好说的。
- c>0:(1)c<1000,直接输出c;(2)1000<=c<1000000,先输出c/1000,再输出逗号(英文符号注意),最后输出c%1000;(3)c>1000000,先输出c/1000000,接着输出逗号,接着输出(c-c/1000000*1000000)/1000,再输出逗号,最后输出c%1000.
- c<0:和c大于0的情况几乎一样,先把c取个相反数,再按c>0处理,再输出的时候加一个负号即可。
- (c-c/10000001000000)/1000:比如c等于1500000,那么c/1000000=1,11000000=1000000,则c-c/1000000*1000000=500000,500000/1000=500。
代码实现
#include<stdio.h>
int main()
{
int a,b;
int c;
scanf("%d%d",&a,&b);
c=a+b;
if(c>0)
{
if(c<1000)
printf("%d",c);
else if(c<1000000)
printf("%d,%03d",c/1000,c%1000);
else
printf("%d,%03d,%03d",c/1000000,(c-c/1000000*1000000)/1000,c%1000);
}
else if(c==0)
{
printf("%d",c);
}
else
{
c=-c;
if(c<1000)
printf("%d",-c);
else if(c<1000000)
printf("-%d,%03d",c/1000,c%1000);
else
printf("-%d,%03d,%03d",c/1000000,(c-c/1000000*1000000)/1000,c%1000);
}
}
注意事项
比如最后输出1,000但如果没有“%03d”,输出就会变成“1,0”。所以,输出的时候加上“%03d”。