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 −106≤a,b≤106. 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
因为数量级限制在10^7次以内,所以采用了比较投机取巧的方法:
源代码如下:
#include<stdio.h>
#include<math.h>
int main(){
int a,b,sum,s;
scanf("%d %d",&a,&b);
sum=a+b;
s=abs(sum);
if(s<1000)
printf("%d",sum);
else if (s<1000000 && s>=1000)
printf("%d,%03d",sum/1000,s%1000);//对取余后位数不够三位的情况,补零
else if(s>=1000000)
printf("%d,%03d,%03d",sum/1000000,(s/1000)%1000,s%1000);
return 0;
}
还有一种方法采用把数字转化为字符串的形式,源代码如下:
#include<stdio.h>
#include<math.h>
int main() {
int a,b,sum,c,i,j,count=0;
char s[9];
scanf("%d%d",&a,&b);
sum=a+b;
c=abs(sum);
if(c<1000) printf("%d",sum);
else {
for(i=0;i<=9;i++)
{ s[i]=sum%10+'0';
sum=sum/10;
count++;
if(sum==0)break;
if(count%3==0)
s[++i]=',';
}
for(;i>=0;i--)
printf("%c",s[i]);
}
return 0;
}