適用範圍:等你會背了再說
(宣告一下這並不是我打的)
/*高精度模版: 大全 */
//根據情況改一下結尾**的輸出
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
struct wint:vector
//用標準庫vector做基類,完美解決位數問題,同時更易於實現
wint& check()//在各類運算中經常用到的進製小函式,不妨內建
while(back()>=10)
return *this;//為使用方便,將進製後的自身返回引用
}};//輸入輸出
istream& operator>>(istream &is,wint &n)
ostream& operator
<<(ostream &os,const wint &n)
//比較,只需要寫兩個,其他的直接代入即可
//常量引用當引數,避免拷貝更高效
bool
operator!=(const wint &a,const wint &b)
bool
operator==(const wint &a,const wint &b)
bool
operator
<(const wint &a,const wint &b)
bool
operator>(const wint &a,const wint &b)
bool
operator>=(const wint &a,const wint &b)
wint operator+(wint a,const wint &b)
//減法,返回差的絕對值,由於後面有交換,故引數不用引用
wint& operator-=(wint &a,wint b)
}return a.check();
}wint operator-(wint a,const wint &b)
//乘法不能先實現*=,原因自己想
wint operator*(const wint &a,const wint &b)
wint& operator*=(wint &a,const wint &b)
//除法和取模先實現乙個帶餘除法函式
wint divmod(wint &a,const wint &b)
}return ans;
}wint operator/(wint a,const wint &b)
wint& operator/=(wint &a,const wint &b)
wint& operator%=(wint &a,const wint &b)
wint operator%(wint a,const wint &b)
//順手實現乙個快速冪,可以看到和普通快速冪幾乎無異
wint pow(const wint &n,const wint &k)
//通過過載運算子,還可以實現++、--、^、!、邏輯運算子等很多運算,十分簡單,此處都不寫了
int main()//現在你完全可以像int一般便捷地使用wint,如下
高精度除法(高精度除以高精度)
先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...
高精度除高精度
演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...
高精度除以高精度
原 題 高精除以高精,求它們的商和餘數。演算法分析 高精除以高精是用減法模擬除法,對被除數的每一位都減去除數,一直減到當前位置的數字 包括前面的餘數 小於除數 由於每一位的數字小於10,所以對於每一位最多進行10次計算 代 碼 include include include using namesp...