这是我第一次刷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的情况
正是这一点最耗费时间和重复代码的工作量