1473. A + B 格式

这是acwingPAT甲级辅导课讲的第一题,很简单,之所以写出来,是因为看到y总在解题过程中的步骤和方法很好、很有条理、非常清晰,我觉得学会这种方法,比多学一些算法更有用。

题目传送

通过样例及题干,我们分析我们需要做的事情有下面几步:

①输入a、b;

②得到a+b的和;

③把和转化为字符串;

④在字符串中添加逗号;

⑤输出字符串。

第三步直接用to_string函数,第四步复杂点。

使用模拟的方法来解决第四步,我们需要重新定义一个字符串,将旧的字符串通过遍历加到新的字符串中,同时在该加逗号的位置加上逗号。

#include <iostream>

using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    int c=a+b;
    string num=to_string(c);
    string res;
    for(int i=num.size()-1,j=0;i>=0;i--)//j计数使用,用来判断是否够3位加逗号 
    {
        res=num[i]+res;//从最低位到最高位加到新的字符串res上 
        ++j;
        if(j%3==0&&num[i-1]!='-'&&i)//每隔三位一个逗号,条件是j能被3整除,同时这个字符前面不能没有数或者前面的数是负号 
            res=','+res;
    }
    cout<<res;
    
    return 0;
}

个人觉得做每一道算法题,都要有这样的清晰的条理、思路,该按步骤按步骤,该模拟模拟,这样才能真正的有进步,做的题才有用。

还有一个对于解题至关重要的点是,要能通过题目和数据要求,准确地知道自己要求什么,要写的程序解决哪一个点,从而对这个点再分析。比如这道题很简单,但是第四步中加逗号,需要判断字符串首位是不是能被3整除,以及当前字符能被3整除它前面那位却不能是负号,如果你只是随意做一下,你会发现你很乱没有头绪,但当你对每一步都有清晰的条理之后,你会发现这道题简单了很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值