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 −10​6​​≤a,b≤10​6​​. 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

解决方法

string

分析:字符串处理
对于如果和为负,先输出符号,再对剩余的字符串进行处理。

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
	int a, b;
	cin >> a >> b;
	string str;
	string s = to_string(a + b);
	if (s[0] == '-')
	{
		cout << s[0];
		s.erase(0, 1);
	}
	reverse(s.begin(), s.end());
	for (int i = 0; i < s.size(); i++)
	{
		if (i % 4 == 3)s.insert(i, ",");`在这里插入代码片`
	}
	reverse(s.begin(), s.end());
	cout << s;
	return 0;
}

参考柳神思路

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int a, b;
	cin >> a >> b;
	string s = to_string(a + b);
	int len = s.size();
	for (int i = 0; i < s.size(); i++)
	{
		cout << s[i];
		if (s[i] == '-') continue;
		if ((i + 1) % 3 == len % 3&&i!=(len-1)) cout << ",";
	}
	return 0;
}

vector

#include<iostream>
#include<string>
using namespace std;
int main() {
	int N, M, flag = 0, len, count = 0;
	scanf("%d %d", &N, &M);
	string s = to_string(N + M);
	string s1;
	if (s[0] == '-') { flag = 1;s.erase(s.begin()); }
	len = s.length();
	for (int i = len - 1; i >= 0; i--) {
		s1.push_back(s[i]);
		count++;
		if (count % 3 == 0&&i!=0)s1.push_back(',');
	}
	if (flag)s1.push_back('-');
	for (int i = s1.length() - 1; i >= 0; i--)printf("%c", s1[i]);
	return 0;
}

后记

字符串的题目,难度不大。值得注意的是对负号的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值