PAT ——1001 a+b format

这是我第一次刷pta也算复习c++,也算入门,这道题别人我不知道怎么搞的,我当时的想法很简单,硬撸,我觉得小白的思想想出来这种lowbi方法不足为怪,因为绝对值都不超过100w嘛,然后在某两个检验点处纠结了半个多小时,后来才发现问题所在,先把代码奉上:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int a,b,c,d;
    cin>>a>>b;
    c=a+b;
    d=abs(c);
    if(c/1000000)
    {
        if((c/1000%1000)&&(c%1000))
        {
            if(abs(c/1000%1000)>=100&&abs(c%1000)>=100)
                cout<<c/1000000<<","<<abs(c/1000%1000)<<","<<abs(c%1000)<<endl;
            else if(abs(c/1000%1000<100)&&abs(c/1000%1000)>=10&&abs(c%1000)>=100)
                cout<<c/1000000<<","<<"0"<<abs(c/1000%1000)<<","<<abs(c%1000)<<endl;
            else if(d/1000%1000<10&&d%1000>=100)
                cout<<c/1000000<<","<<"00"<<abs(c/1000%1000)<<","<<abs(c%1000)<<endl;
            else if(d/1000%1000>=100&&d%1000<100&&d%1000>=10)
                cout<<c/1000000<<","<<abs(c/1000%1000)<<","<<"0"<<abs(c%1000)<<endl;
            else if(d/1000%1000<100&&d/1000>=10&&d%1000<100&&d%1000>=10)
                cout<<c/1000000<<","<<"0"<<abs(c/1000%1000)<<","<<"0"<<abs(c%1000)<<endl;
            else if(d/1000%1000<10&&d%1000<100&&d%1000>=10)
                cout<<c/1000000<<","<<"00"<<abs(c/1000%1000)<<","<<"0"<<abs(c%1000)<<endl;
            else if(d/1000%1000>=100&&d%1000<10)
                cout<<c/1000000<<","<<abs(c/1000%1000)<<","<<"00"<<abs(c%1000)<<endl;
            else if(d/1000%1000<100&&d/1000%1000>=10&&d%1000<10)
                cout<<c/1000000<<","<<"0"<<abs(c/1000%1000)<<","<<"00"<<abs(c%1000)<<endl;
            else  if(d/1000%1000<10&&d%1000<10)
                cout<<c/1000000<<","<<"00"<<abs(c/1000%1000)<<","<<"00"<<abs(c%1000)<<endl;
        }
            
        else if(c%1000)
        {
            if(abs(c%1000)>=100)
                cout<<c/1000000<<","<<"000"<<","<<abs(c%1000)<<endl;
            else if(abs(c%1000)>=10&&abs(c%1000)<100)
                cout<<c/1000000<<","<<"000"<<","<<"0"<<abs(c%1000)<<endl;
            else if(abs(c%1000<10))
                cout<<c/1000000<<","<<"000"<<","<<"00"<<abs(c%1000)<<endl;
        }         
            
        else if(c/1000%1000)
        {
            if(abs(c/1000%1000)>=100)
                cout<<c/1000000<<","<<abs(c/1000%1000)<<","<<"000"<<endl;
            else if(abs(c/1000%1000)<100&&abs(c/1000%1000)>=10)
                cout<<c/1000000<<","<<"0"<<abs(c/1000%1000)<<","<<"000"<<endl;
            else if(abs(c/1000%1000)<10)
                cout<<c/1000000<<","<<"00"<<abs(c/1000%1000)<<","<<"000"<<endl;
        }
        else
            cout<<c/1000000<<","<<"000"<<","<<"000"<<endl;
    }
    else  if(c/1000)
    {   
        if(abs(c%1000)>=100)
            cout<<c/1000<<","<<abs(c%1000)<<endl;
        else if(abs(c%1000)<100&&abs(c%1000)>=10)
            cout<<c/1000<<","<<"0"<<abs(c%1000)<<endl;
        else if(0<abs(c%1000)<10)
            cout<<c/1000<<","<<"00"<<abs(c%1000)<<endl;
        else if(c%1000==0)
            cout<<c/1000<<","<<"000"<<endl;
        
    }
     else
     {
        cout<<(a+b)<<endl;
     }
}

代码很烂,有时间参考下别的大佬的,我先说说我的问题:

1.刚开始没考虑到0的问题

 因为要规格化输出,所以有“0问题”存在必须输出三个“000”

2.只考虑这一层,忘掉了三个数中存在0xx,00x的情况

正是这一点最耗费时间和重复代码的工作量 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值