April 08, 2019
有一张顶点数为 (L+1)×n 的有向图。这张图的每个顶点由一个二元组(u,v)表示(0≤u≤L,1≤v≤n)。
这张图不是简单图,对于任意两个顶点 (u1,v1)(u2,v2),如果 u1<u2,则从 (u1,v1) 到 (u2,v2) 一共有 w[v1][v2] 条不同的边,如果 u1≥u2 则没有边。
白兔将在这张图上上演一支舞曲。白兔初始时位于该有向图的顶点 (0,x)。
白兔将会跳若干步。每一步,白兔会从当前顶点沿任意一条出边跳到下一个顶点。白兔可以在任意时候停止跳舞(也可以没有跳就直接结束)。当到达第一维为 L 的顶点就不得不停止,因为该顶点没有出边。
假设白兔停止时,跳了 m 步,白兔会把这只舞曲给记录下来成为一个序列。序列的第 i 个元素为它第 i 步经过的边。
问题来了:给定正整数 k 和 y(1≤y≤n),对于每个 t(0≤t<k),求有多少种舞曲(假设其长度为 m)满足 mmodk=t,且白兔最后停在了坐标第二维为 y 的顶点?
两支舞曲不同定义为它们的长度(m)不同或者存在某一步它们所走的边不同。
1≤n≤3, 1≤k≤65536, 108≤p≤230。