[PAT甲级]1001. 经典a+b问题

目录

题目描述

代码

注意

题目描述

 大致就是先算a+b,然后对这个输出结果进行分组,每三个数为一组,然后用逗号隔开。

如果计算结果小于四位数就不用做分组处理了。

代码

#include<iostream>
#include<string>
using namespace std;

/* 
    2022/11/26 
   已AC 得分20
     主要是字符串的处理,有个坑,就是它3个数一组,是从后面开始
     我一开始就是前面开始分组,结果一直过不了  比如这样:100,9
     实际要的是1,009 
*/ 
int main(){
	long a,b;
	int count = 0;
	bool flag = false;
	cin>>a>>b;
	long sum = a+b;
	if(sum==0){
		cout<<sum<<endl;
		return 0;
	}else if(sum<0){
		flag = true;
		sum = sum*(-1);
	}
	string data = "" + to_string(sum);
	string result = "";
	
	int length = data.length();
	int index = length-1;
	//格式化,每3个字符加个逗号。
	while(index>=0){
	    count++;
		result = data[index] + result;
		if(count%3==0&&index!=0){
			result = "," + result;
		}
		index--;
	}
	if(flag){
		result = "-" + result;
	}
	
	cout<<result<<endl;
	return 0;
}

因为好久不写c++了,好多与字符串处理相关的内容都忘了,还是java弄这方面比较顺手。(可能因为用的比较多吧...)

注意

我一开始就是没仔细看,我以为它3个数一组是从前面开始数的,比如:100,9这样,所以第一次提交就错了,只得了14分。因为它给的测试用例是个非常特殊的,一共六位,所以你从前面开始还是从后面开始都一样能过他这个例子,我就被误导了呜呜。

他的实际要求是从低位向高位分组,比如:1009---------1,009。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值