int128

发布时间 2023-05-09 04:28:14作者: wydex

顾名思义, __int128 就是占用128字节的整数存储类型。由于是二进制,范围就是 \(−2^{127}\) ~ \(2^{127}−1\),如果使用了 unsigned __int128,则范围变成\(0\)~ \(2^{128}\),即约39位数!

__int128仅有四则运算功能,输入输出需要自已写。

输入

void read(__int128& n) {
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9') {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9') {
        x = (x << 1) + (x << 3) + (ch ^ 48);
        ch = getchar();
    }
    n = x*f;
}

输出

void print(__int128 n) {
    if(n<0) {
        putchar('-');
        n*=-1;
    }
    if(n>9) print(n/10);
    putchar(n%10+'0');
}

如果要赋一个超过longlong的初值,只能用字符串