} while (num);
// 將分拆之后的num進行乘法計算
unsigned int i = 0,j = 0;
for(i = 0;i < tempnum.size();++i)
{
int carry = 0;// 存儲每位計算時來自低位的進位
for(j = 0;j < calcresult.size();++j)
{
int bit1 = 0,bit2 = 0,res = 0;
bit1 = calcresult[j];
bit2 = tempnum[i];
res = bit1 * bit2;
// 保存當(dāng)前位
if((i+j)
{
// 臨時結(jié)果中有對應(yīng)位存在,則直接更新
rest[i+j] += (res + carry) % 10;
}
else
{
// 沒有對應(yīng)位則需要添加
rest.push_back((res+carry)%10);
}
// 有進位,則更新進位
carry = (res + carry) / 10;
}
// 如果計算之后還有最高位的進位,那么則直接添加進去
if(carry)
{
// 保存當(dāng)前位
if((i+j)
{
// 臨時結(jié)果中有對應(yīng)位存在,則直接更新
rest[i+j] += carry;
}
else
相關(guān)推薦:
2010年9月計算機等級考試成績查詢時間匯總
2011年計算機等級考試二級C++輔導(dǎo)筆記匯總
2011年上半年計算機等級考試報名時間匯總
2011計算機等級考試二級C++輔導(dǎo)實例編程匯總