麻烦帮我看我这个代码有什么问题——杭电acm1002(HDOJ1002题)
发布网友
发布时间:2022-10-14 02:28
我来回答
共1个回答
热心网友
时间:2023-11-22 06:06
你这个代码真的很乱。。。这是高精度加法运算,你应该形成自己的高精度运算模板,不要临时写的很乱,自己都看不懂,而且错误频出,还难以调试。
我觉得大家都没什么耐心把你这个程序完整的读一遍并且运行调试一遍。。。
我提供我自己写的代码,里面的高精度加法是我高精度库的一部分,希望你形成自己风格,正确而且高效的算法库,这才是ACM的正确道路。
#include
<string>
#include<iostream>
#include
<algorithm>
using
namespace
std;
string
operator+(string
x,
string
y)
{
if(x.size()
<
y.size())
//
预处理,保证x的实际长度>=y
x.swap(y);
y.insert(y.begin(),
x.size()-y.size(),
'0');
//
y开头补0到和x一样长
string
sum(x.size(),
-1);
//
初始大小:x.size()
int
carry=0;
for(int
i=x.size()-1;
i
>=
0;
--i)
{
carry
+=
x[i]+y[i]-2*'0';
sum[i]
=
carry%10+'0';
carry
/=
10;
}
if(carry
>
0)
//
还有进位1
return
string("1")
+=
sum;
//
给开头添加一个“1”
return
sum;
}
int
main()
{
string
s1,s2,s3;
int
t,n;
cin>>n;
t=1;
while(n--)
{
cin>>s1>>s2;
cout<<"Case
"<<t++<<":"<<endl<<s1<<"
+
"<<s2<<"
=
"<<s1+s2<<endl;
if(n!=0)
cout<<endl;
}
return
0;
}
-----------------------------------------------------
突然发现你还是我空间好友。。。