区间1~n的异或值
證明我不會。。直接上結論和實現:
設?f(x, y)?為x到y的所有整數的異或值。
f(1, n) ?= ?f(0, n) ?=
???n????? n % 4 == 0
???1????? n % 4 == 1
???n +1?? n % 4 == 2
? ?0???? ?n % 4 == 3
實現代碼:?
typedef unsigned long long ull; ull xor_n(ull n) {ull temp=n&3;if(temp&1)return temp/2ull^1;return temp/2ull^n; }?
總結
- 上一篇: POJ - 3635 Full Tank
- 下一篇: 中石油训练赛 - 小A盗墓(线段树+异或