你终于回来了(。・∀・)ノ
高精类模板
基础实现凭借nofind
功能
高精类正整数加减乘除。
高精类正整数与普通正整数类型加减乘除。(只是运算时转成高精并没有单独写所以复杂度不优)
函数及默认参数
LEN 压位高精的模数
BASE_LEN 压位高精位数
LEN 数位长度
a 数组
len 长度
print()输出
del_zero()清除前导零
add()高精除法提前进位使用
opd()返回奇偶性
GNUM()构造函数,支持默认构造,传入数组、字符串、整形进行构造
~GNUM()析构函数
operator+加法
operator-减法
operator*乘法
operator/除法
operator<大小比较
operator<<输出流
operator>>输入流
class GNUM { private:static const int BASE = 10;static const int BASE_LEN = 1;static const int LEN = 20100;int a[LEN];int len; public:GNUM(){len = 0;memset(a, 0, sizeof(a));}~GNUM(){len = 0;memset(a, 0, sizeof(a));}template <typename T>GNUM(T x){len = 0;memset(a, 0, sizeof(a));if (x == 0){a[++len] = x;return;}while (x){a[++len] = x % BASE;x /= BASE;}}template <typename Y>GNUM(Y *s, int lenth){len = lenth;memcpy(a, s, sizeof(a));}GNUM(char *x){len = 1;register int lenth = strlen(x) - 1;memset(a, 0, sizeof(a));for (register int i = lenth, j = 1; i >= 0; --i){if (j == BASE)j = 1, ++len;a[len] += (x[i] - '0') * j;j *= 10;}}friend istream &operator>>(istream &input, GNUM &in){char s[LEN];input >> s;in = GNUM(s);return input;}friend ostream &operator<<(ostream &output, GNUM out){output << out.a[out.len];for (register int i = out.len - 1; i; --i){output << right << setw(BASE_LEN) <<setfill('0') << out.a[i];}return output;}inline void print(){printf("%d", a[len]);for (register int i = len - 1; i; --i)printf("%04d", a[i]);}inline GNUM del_zero(){while (!a[len] && len > 1)--len;}inline void add(int k){if (!k && len == 1 && !a[1])return;for (register int i = len; i; --i)a[i + 1] = a[i];a[1] = k;++len;}inline friend bool operator<(const GNUM &x, const GNUM &y){if (x.len == y.len){register int i;for (i = x.len; x.a[i] == y.a[i] && i > 1; --i);if (i >= 1)return x.a[i] < y.a[i];elsereturn false;}elsereturn x.len < y.len;}inline friend bool operator>(const GNUM &x, const GNUM &y){if (x.len == y.len){register int i;for (i = x.len; x.a[i] == y.a[i] && i > 1; --i);if (i >= 1)return x.a[i] > y.a[i];elsereturn false;}elsereturn x.len > y.len;return false;}inline friend bool operator==(GNUM x, GNUM y){if (x.len == y.len){register int i;for (i = x.len; x.a[i] == y.a[i] && i >= 1; --i);if (i >= 1)return false;return true;}elsereturn false;return false;}inline friend bool operator<=(const GNUM &x, const GNUM &y){return !(x > y);}inline friend bool operator>=(const GNUM &x, const GNUM &y){return !(x < y);}template <typename AF>inline friend GNUM operator+(const GNUM &x, const AF &y){return x + GNUM(y);}inline friend GNUM operator+(const GNUM &x, const GNUM &y){GNUM res;res.len = max(x.len, y.len);int k = 0;for (register int i = 1; i <= res.len; ++i){res.a[i] = x.a[i] + y.a[i] + k;k = res.a[i] / BASE;res.a[i] %= BASE;}if (k)res.a[++res.len] = k;res.del_zero();return res;}template <typename JF>inline friend GNUM operator-(GNUM x, JF y){return x - GNUM(y);}inline friend GNUM operator-(GNUM x, GNUM y){if (x < y)putchar('-'), swap(x, y);GNUM res = x;register int cnt = x.len;for (register int i = 1; i <= cnt; ++i){res.a[i] -= y.a[i];if (res.a[i] < 0)--res.a[i + 1], res.a[i] += BASE;}res.del_zero();return res;}template <typename CF>inline friend GNUM operator*(const GNUM &x, const CF &y){return x * GNUM(y);}inline friend GNUM operator*(const GNUM &x, const GNUM &y){GNUM res;res.len = x.len + y.len;for (register int i = 1; i <= x.len; ++i){for (register int j = 1; j <= y.len; ++j){res.a[i + j - 1] += x.a[i] * y.a[j];res.a[i + j] += res.a[i + j - 1] / BASE;res.a[i + j - 1] %= BASE;}}res.del_zero();return res;}template <typename GF>inline friend GNUM operator/(const GNUM &x, const GF &y){GNUM res;res.len = x.len;long long k = 0;for (register int i = x.len; i; --i){k = k * BASE + x.a[i];res.a[i] = k / y;k %= y;}res.del_zero();return res;}inline friend GNUM operator/(const GNUM &x, const GNUM &y){GNUM res, k;res.len = x.len;for (register int i = x.len; i; --i){k.add(x.a[i]);while (k >= y)k = k - y, res.a[i]++;}res.del_zero();return res;}inline bool opd(){return a[1] & 1;} };
相关知识
你终于回来了(。・∀・)ノ
肉の別名・隠語の由来 牡丹・桜・柏・紅葉 植物・花の名前
湿生・水生植物とは
放烟花颜文字表情 放烟花表情符号 放烟花颜文字大全 (,,・e・)pー━**※*⌒*
楠(クス、クスノキ)
記念樹や思い出の庭木の再利用・再活用・アップサイクル
水生植物・水草種類一覧
セダム・虹の玉の育て方
味の素(株)、中国・梅花(メイフア)生物科技集団と飼料用アミノ酸製造委託契約を締結〜動物栄養事業の成長加速に向け、グローバル供給体制を再構築〜
黄色い花を咲かせよう!黄色い花の種類を春・夏・秋・冬の季節ごとに紹介
网址: 你终于回来了(。・∀・)ノ https://www.huajiangbk.com/newsview2018027.html
上一篇: 番龙眼地板的优缺点 番龙眼实木地 |
下一篇: 实木橱柜制作过程大概有哪些 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039