因為整數的長度大於1e5所以利用輸入字串的方式,將大整數從字串轉移到陣列中
進行加減
#include
#include
using
namespace std;
vector<
int>
add(vector<
int>
&a,vector<
int>
&b)if
(t)c.
push_back
(t);
//加入最高位進製
與加法思路基本一致,但是要首先考慮ab大小問題以及減出來是否為負數的問題
包括最後去除掉c中多餘0
#include
#include
using
namespace std;
//a>=b return true
intcmp
(vector<
int>
&a,vector<
int>
&b)return
true;}
vector<
int>
sub(vector<
int>
&a,vector<
int>
&b)while
(c.size()
>
1&&c.
back()
==0)c.pop_back()
;//拿掉結果中多餘的0,,,如111-110=001把他變為1而不是001
}int
main()
else
高精度乘法
//高精度乘法
大數a乘以小數b
思路同加法一致
唯一需要注意的是高精度乘法是每一位與b整個相乘,而不是小學那種演算法
#include
#include
using
namespace std;
vector<
int>
mul(vector<
int>
&a,int b)
return c;
}int
main()
高精度除法
//高精度除法定義一餘數t,應注意與加減乘不同,除操作從最高位開始
並且存進去的向量c在最後應做倒序和去除字首0操作
#include
#include
#include
using
namespace std;
//引數分別是被除數,除數,餘數
vector<
int>
div(vector<
int>
&a,int b,
int&t)
reverse
(c.begin()
,c.end()
);//倒置c
while
(c.size()
>
1&&c.
back()
==0)c.pop_back()
;//除0
return c;
}int
main()
基礎演算法 二
1.氣泡排序 bubblesort 原理 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二...
基礎演算法回顧(二)
遞迴 遞迴是呼叫自己的函式 遞迴函式有基線條件和遞迴條件,決定結束和遞迴 遞迴呼叫會產生呼叫棧 棧有壓入和彈出兩種操作 呼叫鏈越長,呼叫棧就會越長,所占用的記憶體就多 尾遞迴可以解決呼叫棧過長的問題。快速排序 快速排序使用了分而治之的方法 分而治之 遞迴式問題解決方法 d c分而治之的原理 1.找出...
二 基礎查詢演算法
有兩種對列表內資料進行查詢的方法,順序查詢和二叉查詢。當資料項在列表內隨機排列的時候可以用順序查詢,當資料在列表內有序排列的時候則會用到二叉查詢。抄點書上原話 助於理解,哈哈。一 順序查詢 最常見的查詢型別就是從記錄集的開始出順次遍歷每條記錄,直到找到所要的記錄或者是達到資料集的末尾,這就是順序查詢...