我已经开始编写一个 bignum 库,其中包含一个短裤向量来表示值、一个打印函数和负数支持。但是,我找不到实现长加法的好方法,如下所示:
123
+123
----
246
我拥有的没有给出段错误的最新代码是这样的:
void add(unsigned long long b)
{
for(long long i=v.size()-1;i>=0;--i)
{
if((b+v[i])<10)
v[i]+=b;
else // Carry
{
if(i==0) // 1st digit
{
v.push_front(1); // Can't be more than 1
}
else
v[i-1]++; // Increment digit to the left
}
}
}
,但带进位的加法不正确(10+1 是 21)
编辑:它被实现为一个类