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
题目大意:
计算 a + b的和并且按标准格式输出,这里的标准格式是指从个位开始,每隔3个数字加一个逗号(groups of three by commas )。
例如:12,345
-9,997
C++实现
#include<iostream>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
long long c=a+b;
string s=to_string(c);//用字符串处理比较方便
int m;
if(s[0]=='-')
{
if((s.size()-1)%3==0) m=3;//-1是把开头的负号去掉
else m=(s.size()-1)%3;
}
else
{
if(s.size()%3==0) m=3;
else m=s.size()%3;
}
string ss="";
for(int i=0;i<s.size();i++)
{
if(s[i]=='-') { ss+="-";continue;}//处理负号
ss+=s[i];
m--;
if(m==0) {
m=3;
if(i==s.size()-1) continue;
ss=ss+",";
}
}
cout<<ss;
return 0;
}
二刷AC代码
//参考liuchuo
#include<iostream>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.size();
for(int i = 0; i < len; i++){
cout<<s[i];
if(s[i] == '-'){
continue;
}
//在合适的地方输出逗号,根据规律得出(i+1) % 3 == len % 3 并且i不是最后一个下标
if( i != len - 1 && (i+1) % 3 == len % 3) cout<<',';
}
return 0;
}