关于

it2023-08-11  81

关于__int128

long long int 只能表示( 2 63 − 1 2^{63}-1 2631),而__int128可以表示( 2 127 − 1 2^{127}-1 21271),但是需要自己写输入和输出,类似于快读


关于快读:

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; }
最新回复(0)