演变规则分析
设当前序列长度为 L,其中数字 1 的个数为 c1,数字 0 的个数为 c0=L−c1。
0 变为 1,贡献长度 1;1 变为 01,贡献长度 2。状态转移
有一个初始序列,仅由数字 0 和 1 组成。在每一轮演变中,序列中的每个数字会按照以下规则同时进行变换,然后将所有变换结果按原顺序拼接形成新序列:
0,则变换为 1;1,则变换为 0 后紧跟着 1(即产生两个数字 0 和 1,先 0 后 1)。现在给定初始序列以及需要进行的演变轮数 n,请你求出经过 n 轮演变后序列的长度。由于结果可能非常大,请输出长度对 109+7 取模后的值。
本题包含多组测试数据。序列的长度不超过 105,轮数 n 不超过 1018,所有测试数据中 n 的总和不超过 3×105。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.