为什么位运算A不了最后一个点

P5657 [CSP-S2019] 格雷码

@[x17875487211](/user/490694) 第一,他只是数组开到了 70; 第二, `ull` 的范围不到 $2^{64}$,所以最后一个点过不了
by 8atemak1r @ 2022-04-15 15:37:14


@[8atemak1r](/user/305121) 那如果直接2的64次方不是直接爆掉了吗,最多2的64-1啊 而且为啥我位运算不行
by x17875487211 @ 2022-04-15 17:22:41


@[x17875487211](/user/490694) 实测输入 $2^{64}$ 再输出结果是 $2^{64} - 1$,具体原理我也不太清楚![](//图.tk/p)
by 8atemak1r @ 2022-04-15 18:17:52


1ull<<64 = 0 但是如果 x=64, 1ull<<x = 1 被编译器演了 (时隔两年找到了当年被扣5分的原因。。。
by wise_world @ 2022-07-14 10:33:25


@[x17875487211](/user/490694) 可以试试 __int128 ,我开反正跑过了
by 凌寒 @ 2022-07-20 13:29:34


@[8atemak1r](/user/305121) ```cpp cin >> n >> k ; k ^= k >> 1 ; while ( ~ -- n ) cout << (k >> n & 1) ; ``` 这样写就$A$了
by Hsy_Tony @ 2022-10-06 15:10:34


https://www.luogu.com.cn/discuss/699289
by xihale @ 2023-10-03 08:25:06


|