您的位置:首页 > 其它

G2: 大数加法

2013-01-24 18:30 274 查看
第一个数字是在数组里,第二个是个32bit uint

uncompleted, not mine code.

void add(vector<int> & a, uint b)
{
int remainder = 0;
int i;
for(i = a.size() - 1; i > -1 && b > 0; --i)
{
a[i] += remainder + b % 10;
b = b / 10;
if(a[i] >= 10)
{
a[i] -= 10;
remainder = 1;
}
else
{
remainder = 0;
}
}
if(i == -1)
{
while(b > 0)
{
uint x = b % 10 + remainder;
b = b / 10;
if(x >= 10)
{
x -= 10;
remainder = 1;
}
else
{
remainder = 0;
}
a.insert(a.begin(), x);
}
}
else if(remainder == 1)
{
for(int j = i; j > - 1; --j)
{
a[j] += remainder ;
if(a[j] >= 10)
{
a[j] -= 10;
remainder = 1;
}
else
{
break;
}
}
}
if(remainder == 1)
{
a.insert(a.begin(), 1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: