logo AlgoBeat OnlineJudge 返回比赛
登录 注册

A. [TopCoder SRM 855] CandyBowlGame

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

有一排共 个碗,编号依次为 。每个碗里有一些糖果。

两个玩家轮流进行操作,无法进行合法操作的玩家输掉游戏。在每一回合中,当前玩家可以选择以下两种操作之一:

  • 选择一个当前至少有 颗糖果的碗,从中吃掉恰好 颗糖果。
  • 选择一个奇数 ,以及一个满足 且当前至少有 颗糖果的碗 。从碗 中取出 颗糖果,放入碗 中。

(例如,假设你选择奇数 。如果碗 颗糖果,你可以选择 ,然后从碗 中取出 颗糖果,留下 颗,并将这 颗糖果加入碗 中。)

现在给出初始局面:一个长度为 的整数序列 ,其中 表示碗 中的初始糖果数量。此外,还有 颗额外的糖果必须被放入这些碗中(每颗糖可以放入任意一个碗)。

考虑所有可以通过将 颗额外糖果加入初始局面而得到的不同糖果分布(即所有可能的 元非负整数数组)。如果某个分布下,先手玩家存在必胜策略(无论后手如何操作,先手按照该策略都保证获胜),则称该分布为先手必胜的。

请统计在所有可能的分布中,有多少个是先手必胜的。将答案对 取模后输出。

输入格式

第一行包含 个整数 ,表示每个碗的初始糖果数。
第二行包含一个整数 ,表示需要添加的额外糖果数量。

输出格式

一个整数,表示先手必胜的分布数量对 取模的结果。

样例

样例 #1

样例输入 #1

4
3

样例输出 #1

1

样例解释 #1

唯一的碗(碗 )中有 颗糖是先手必胜局面。唯一的合法操作是吃掉两颗糖,双方轮流执行后,碗中会剩下 颗糖,此时后手无合法操作而落败。


样例 #2

样例输入 #2

0 0 0 0 0 0 1
0

样例输出 #2

0

样例解释 #2

该初始局面是先手必败的。唯一的合法操作是将唯一的糖果向左移动一格,最终后手会将糖果移入碗 ,然后先手落败。


样例 #3

样例输入 #3

0 0 0 0 0 5 0
0

样例输出 #3

1

样例解释 #3

先手有一个必胜操作:一开始将 颗糖全部从碗 移到碗 。此后后手被迫吃掉 颗,先手再吃掉 颗,碗 剩下 颗糖,后手无法操作而落败。


样例 #4

样例输入 #4

1 0 0
2

样例输出 #4

4

样例解释 #4

需要考察以下 种分布:。其中 种是先手必胜的, 种是先手必败的。


样例 #5

样例输入 #5

0 0 0
0

样例输出 #5

0

样例解释 #5

先手立即无法操作而落败。

数据范围与提示

数据范围