题目链接
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
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int sum=a+b;
int flag;//符号位
if(sum<0)
{
flag=1;
sum=-1*sum;
}
else flag=0;
int index=0;
int reslut[100];//将sum以每三位逆序存放
if(sum==0)
{
cout<<"0"<<endl;
return 0;
}
while(sum)
{
reslut[index++]=sum%1000;
sum=sum/1000;
}
if(flag) cout<<"-";
for(int i=index-1;i>=0;i--)
{
if(i==index-1) printf("%d",reslut[i]);//最高位不补0
else printf("%03d",reslut[i]);
if(i) cout<<",";
}
cout<<endl;
}
别人对“,”的处理
把a+b的和转为字符串s~除了第一位是负号的情况,只要当前位的下标i满足(i + 1) % 3 == len % 3并且i不是最后一位,就在逐位输出的时候在该位输出后的后面加上一个逗号~
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.length();
for (int i = 0; i < len; i++) {
cout << s[i];
if (s[i] == '-') continue;
if ((i + 1) % 3 == len % 3 && i != len - 1) cout << ",";
}
return 0;
}