关于__int128
long long int 只能表示( 2 63 − 1 2^{63}-1 263−1),而__int128可以表示( 2 127 − 1 2^{127}-1 2127−1),但是需要自己写输入和输出,类似于快读
关于快读:
template<typename T> inline void re(T &x) {
int f = 1; x = 0; char c = getchar();
while (!isdigit(c)) {
if (c == '-') f = -1;
c = getchar();
}
while (isdigit(c)) {
//x = (x << 3) + (x << 1) + (c ^ 48);
x = x * 10 + c - '0';
c = getchar();
}
x *= f;
}
template<typename T, typename... Args> void re(T &first, Args& ... args) {
re(first);
re(args...);
}
实现__int128:
例如计算 a + b:
inline __int128 read() {
__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 * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
inline void write(__int128 x) {
if(x < 0) {
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int main() {
__int128 a = read();
__int128 b = read();
write(a + b);
return 0;
}