A + B 格式
计算 a+b并以标准格式输出总和----也就是说,从最低位开始每隔三位数加进一个逗号(千位分隔符),如果结果少于四位则不需添加。
输入格式
共一行,包含两个整数 a和b。
输出格式
共一行,以标准格式输出 a+b的和。
数据范围
−10^6≤a,b≤10^6
输入样例:
-1000000 9
输出样例:
-999,991
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a , b;
cin>>a>>b;
int c = a+b;//两个10^6的数相加不能超int类型最大数限制。
/*
对于许多现代编程语言和平台(如C/C++在32位系统上),int 类型通常是32位,其取值范围大约是 -2,147,483,648 到 2,147,483,647(包括负数的最小值但不包括正数的最大值,因为有一个位用于表示正负号)。
因此,两个不超过 1 * 10^6 的数相加的结果不会超过 2 * 10^6,即 2,000,000。这个值远小于 int 类型在32位系统上能表示的最大值,所以两个这样的数相加是安全的,不会导致溢出。
*/
string s1 = to_string(c),s2;
int j = 0 ;
for(int i = s1.size()-1 ; i >= 0 ; i --)
{
s2 = s1[i] + s2;//这里一定要注意是s1+s2,因为是前面是倒着算的往前推的。
j ++;
if( j%3==0 and i and s1[i-1]!='-') s2 = ","+s2; //这里的i是因为考虑不能再最前面加逗号,例如900,000;如果不加这个的话就可能会在9前面加逗号,如果是-900,000这种也得考虑。
}
cout<<s2<<endl;
}