luogu#P10893. 城市化发展委员会
城市化发展委员会
题目背景
MLE 大帝曾说过:
所以为了应对这种情况我们设立了城市化发展委员会。
题目描述
在高中的校园里我们常常能看到随机刷新的小情侣,对于他们之间的情感,对于 OIer 来说还是太过于高深了,即使是退役的 AzureHair 也无法理解这一行为,但是作为自命的城市化发展委员会的常委,他有自己的一套理解方法。
他认为,女生往往对男生十分的严格。一天开始时男生在女生的心里的积分会加 ,而如果当天惹女生生气了 次,积分就会在此基础上减 。积分会不断累计,一旦小于等于 就可能导致去城市化的严重后果。
现在 威廉 在和 珂朵莉 进行一种城市化行为,威廉 在纳西妲的帮助之下获得了超能力:一是他可以预知到接下来一个周期的积分变化情况,初始的周期长度为 ;二是他可以选择从任意一天开始,开始前的日子将会被拼接到最后一天之后。
他从每一天开始都尝试过一次后,发现了 个能使得他不被去城市化的起始日期。随后他会将这若干种情况下的序列按照起始日期的先后拼在一起,变成一个长度为原先 倍的周期。他如此重复操作 次,由于一天天地试太累了,威廉 只想知道最后一次操作后有多少个起始日期能让自己不被去城市化,对 取模。
形式化地说,我们称满足前缀和始终大于 的数列为 “安全的”。
对于一个长为 的数列 ,根据以下算法构造出数列 ,初始时 为空。
- 重复执行 次:
-
若 是安全的,将其整个接到 末尾。
-
将 循环左移一位,即令 。
现在给定 ,满足其各项均不大于 1。
从 开始按上述规则生成数列 到 ,请求出 与 的长度比,这个值只要存在就一定是整数,请输出它对 取模的值。特别地,如果 为空,请输出 0
。
输入格式
普通题意:
共两行,第一行两个整数 和 ,表示初始的周期长度和操作次数。
第二行 个小于等于 1 的整数,表示每天的积分变化。
形式化题意:
共两行,第一行两个整数为 的长度 以及 。
第二行是 。
输出格式
一行一个整数,表示答案对 取模的结果。
8 0
1 1 -2 1 1 -1 0 1
2
6 0
1 1 -4 -5 1 -4
0
提示
【样例解释1】
对于样例 #1 的数据,初始周期为 1 1 -2 1 1 -1 0 1
。从每一天开始得到的序列分别是:
1 1 -2 1 1 -1 0 1
1 -2 1 1 -1 0 1 1
-2 1 1 -1 0 1 1 1
1 1 -1 0 1 1 1 -2
1 -1 0 1 1 1 -2 1
-1 0 1 1 1 -2 1 1
0 1 1 1 -2 1 1 -1
1 1 1 -2 1 1 -1 0
只有从第 4 天和第 8 天开始的序列是满足条件的。
形式化题意:
,长度为 16,因此应输出 2。
【样例解释2】
可以证明不存在合法的方案。
喂!样例全都 是不是太过分了?!
数据范围:
对于 的数据,保证 ,。
对于另外 的数据,保证 。
对于 的数据,保证 ,,。