#P7468. [NOI Online 2021 提高组] 愤怒的小 N

[NOI Online 2021 提高组] 愤怒的小 N

题目描述

极度愤怒的小 N 通关了一款游戏来泄愤。

这款游戏共有 nn 关,分别为第 00 关、第 11 关、第 22 关、\cdots、第 n1n-1 关。这些关卡中有一些是普通关卡,另一些则是奖励关卡。

这款游戏中普通关卡与奖励关卡的分布比较特殊。如果用字符 a\texttt{a} 表示普通关卡,用字符 b\texttt{b} 表示奖励关卡,那么第 00 关、第 11 关、第 22 关、\cdots、第 n1n-1 关依次排列形成的字符串是一个无穷字符串 ss 的前缀,且 ss 可以按照如下方式构造:

  1. 初始时 ss 为包含单个字符 a\texttt{a} 的字符串。

  2. ss 的每个字符 a\texttt{a} 替换成字符 b\texttt{b},每个字符 b\texttt{b} 替换成字符 a\texttt{a} 得到字符串 tt,然后将 tt 拼接到 ss 后。

  3. 不断执行2. 得到的字符串就是最终的 ss

可以发现 s=abbabaabbaababbas=\texttt{abbabaabbaababba}\cdots,所以这款游戏的第 00 关是普通关卡,第 11 关 是奖励关卡,第 22 关是奖励关卡,第 33 关是普通关卡,以此类推。

通过游戏的第 ii 关可以得到 f(i)f(i) 分,其中 f(x)=a0+a1x+a2x2++ak1xk1f(x)=a_0+a_1x+a_2x^2+\cdots+a_{k-1}x^{k-1} 是一个固定的 k1k-1 次多项式。

小 N 通关时一气之下通过了所有奖励关卡而忽略了所有普通关卡,然后就把游戏卸载了。现在回想起来,他想要知道他在卸载游戏前的总得分对 109+710^9+7 取模后的结果。

输入格式

第一行一个正整数 nn,表示游戏的关卡数目。为方便,nn 以二进制表示给出。

第二行一个正整数 kk,表示多项式的次数加一。

第三行 kk 个非负整数,分别为 a0,a1,a2,,ak1a_0,a_1,a_2,\cdots,a_{k-1},表示多项式的各项系数。

输出格式

一行一个非负整数,表示小 N 卸载游戏前的总得分对 109+710^9 + 7 取模后的结果。

1000
3
3 2 1
110
11111100101
4
2 0 2 1
143901603
1001011001101001
16
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1
184740992

提示

对于所有测试点:0log2n<5×1050\le \log_2n<5\times 10^51k5001\le k\le 5000ai<109+70\le a_i < 10^9 + 7ak10a_{k-1}\ne 0。

测试点编号 log2n\log_2n\le kk\le
121\sim2 1010 500500
343\sim4 2020
585\sim8 100100
9109\sim10 500500
111211\sim12 5×1055\times 10^5 11
131613\sim16 100100
172017\sim20 500500

感谢 s_r_f 提供数据。