顾名思义, __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
的初值,只能用字符串