增加前缀XOR
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题面翻译
给定 ,希望构造长度为 的数列 满足条件:
- 。
- 令 ,那么 是单增的。
求方案个数。
题目描述
正整数 が与えられます。
長さ の正整数列 であって、以下の条件を満たすものの個数を で割った余りを求めてください。
- $ B_i\ =\ A_1\ \oplus\ A_2\ \oplus\ \dots\ \oplus\ A_i $ としたとき、
ただしここで、 はビット単位 演算を表します。
ビット単位 演算とは 非負整数 のビット単位 、 は、以下のように定義されます。
- を二進表記した際の () の位の数は、 を二進表記した際の の位の数のうち一方のみが であれば 、そうでなければ である。
例えば、 となります (二進表記すると: )。 一般に 個の非負整数 のビット単位 は $ (\dots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \dots\ \oplus\ p_k) $ と定義され、これは の順番によらないことが証明できます。
输入格式
入力は以下の形式で標準入力から与えられます。
输出格式
答えを出力してください。
样例 #1
样例输入 #1
2 4
样例输出 #1
5
样例 #2
样例输入 #2
4 4
样例输出 #2
0
样例 #3
样例输入 #3
10 123456789
样例输出 #3
205695670
提示
制約
- 入力される値はすべて整数
Sample Explanation 1
例えば とすると であり、 より が成り立つので条件を満たします。 この他には $ (A_1,\ A_2)=(1,\ 2),\ (1,\ 4),\ (2,\ 4),\ (3,\ 4) $ が条件を満たします。
12.10模拟赛
- Status
- Done
- Rule
- Ledo
- Problem
- 5
- Start at
- 2023-12-10 8:30
- End at
- 2023-12-10 18:30
- Duration
- 10 hour(s)
- Host
- Partic.
- 9