大數相加 大數相乘 C

2021-07-26 13:17:08 字數 2008 閱讀 1603

最簡單的思路是直接用int型陣列儲存大數的每一位,程式比較容易實現,但是效率稍低,直接上**。

#include#includeusing namespace std;

class bign

bign(const bign&t)

bign operator=(const bign&t)

bign operator=(const char*t)

bign operator+(const bign&t)const

else if (i > pos_high)

else

}if (r > 0)

ans.num[i] = 1, ans.pos_high = i;

else

ans.pos_high = i - 1;

return ans;

} bign operator*(const bign&t)const

if (r > 0)

te.num[j+i] = r,te.pos_high=j+i;

else

te.pos_high = j-1+i;

ans = ans + te;

} return ans;

} bign operator++()

if (r > 0)

num[i] = 1,pos_high++;

return *this;

} bool operator<(const bign&t) }

friend ostream& operator<<(ostream&out,const bign&x)

int mod(int mod) };

int main()

int型可以表示所有9位數,僅表示一位不僅浪費空間,而且增加了9倍的運算次數,故可以用int表示9位數進行優化,如123456789這個數占1個,1234567890佔兩個。乘法採用模擬手動演算法的方法,各位依次相乘,最後相加。直接看**吧。

#include#includeusing namespace std;

const int mod = 1000000000;

class bign

bign(char*t)

if (b > 0)

bign operator+(const bign&t)const

else if (i >= t.len)

else

}if (r > 0)

ans.num[i] = r, ans.len = i + 1;

else

ans.len = i;

return ans;

} bign operator+(const int&t)

if (r > 0)

ans.num[len] = 1, ans.len = len + 1;

else

return ans;

} bign operator*(const bign&t)const

if (r > 0)

te.num[i + j] = (int)r, te.len = i + j + 1,r=0;

else

te.len=i + j;

ans = ans + te;

} return ans;

} bign operator*(const int&t)

if (r > 0)

ans.num[i] = (int)r, ans.len = i + 1, r = 0;

else

ans.len = i ;

return ans;

} friend ostream& operator<<(ostream&out, const bign&t)

}else out << 0;//大數佔0位直接輸出0

return out;

} bool operator<(const bign&t) }

};int main()

大數相加,大數相乘

題目 大數相加鏈結 思路 為了方便兩個字串相加,我們將短的字串,前面補0,最重要的一點是我們需要設定進製標誌ok class solution for int i size num2 i for int i longsize 1 i 0 i else ret c ret if ok 1 return...

大數相乘 大數相加

大數相乘 大數相乘 1 include includeint main int ans i while lb 0 int cnt j for i 0 i 0 i if e i break 去除前面多餘的0 if i 1 else 當結果是0的時候 printf 0 printf n return 0...

list 相加 大數相加

演算法流程 1 大數可能超出任何一種整數型別,會引發溢位問題,所以用字串的格式儲存字串a,b 2 獲取字串a的長度為alen,字串b的長度為blen 3 比較alen和blen的大小,用maxlen儲存更大值。4 建立陣列aarr,大小為maxlen,儲存字串a每一位上的值 5 建立陣列barr,大...