#P6673. [清华集训2016] 石家庄的工人阶级队伍比较坚强

[清华集训2016] 石家庄的工人阶级队伍比较坚强

题目背景

B 君和 G 君在过街天桥上。

B 君:「又到冬天啦,算起来到大学已经三年多了」

G 君:「是呀」

B 君:「街上的情侣又多起来了,想想三年之前,我也是这样……」

G 君:「??」

B 君:「……在天桥上看情侣的!」

G 君:「唔。」

B 君:「不过这次有你陪我了呢~」

G 君:「……」

B 君:「诶诶,我有个问题想问你~」

G 君:「问吧」

B 君:「假设 n=3mn=3^m 个人一起玩 cei ding ke」

G 君:「啊咧?cei ding ke 是什么?」

B 君:「就是石头剪刀布~,我们也叫钉钢锤」

G 君:「你就问这个?」

B 君:「你等会,我还没说完呢」

题目描述

n=3mn=3^m 个人在玩石头剪刀布, 一共有 tt 轮游戏,每轮有 mm 次石头剪刀布。

在同一轮的 mm 次游戏中,每个人的决策必须是提前确定的,也就是说不能采用随机策略,也不能根据前若干局的结果决定下一局的决策; 这样,显然一共有 n=3mn=3^m 种决策。

n=3mn=3^m 个人会采取两两不同的决策。 为了方便表达,对于第 xx0x<n0≤x<n)个人,将 xx 转换成三进制得到一个 mm 位的数。 其中 00 表示剪刀,11 表示石头,22 表示布。就得到了第 xx 个人采取的策略。

由于编号是固定的,因此每个人在不同轮的 mm 次游戏中都会采取同一套决策。

xx 个人在最初时有一个分数 f0,xf_{0,x}

在第 ii 轮中,他将和另一个人 yy 进行 mm 次的石头剪刀布的比赛。

我们用 W(x,y)W(x,y) 表示 xx 在和 yymm 次比赛中赢的次数; 用 L(x,y)L(x,y) 表示 xx 在和 yymm 次比赛中输的次数。

在第 ii 轮结束之后,第 xx 个人分数是:

fi,x=0y<nfi1,ybu,vf_{i,x}=∑_{0≤y<n}f_{i−1,y}b_{u,v}

其中 u=W(x,y)=L(y,x),v=L(x,y)=W(y,x)u=W(x,y)=L(y,x),v=L(x,y)=W(y,x),平局不计入次数;bu,vb_{u,v} 则是一个给定的评分数组。

注意即使 yyxx 一样(自己转移到自己)也会乘上一个系数 b0,0b_{0,0}(即自己跟自己打全为平局)。

显然随着轮数越来越多,分数也会越来越大, 这个计分系统和我们平时用的计算机一样,也会溢出。 当要储存的分数 ff 大于等于 pp 的时候,就会变成 fmodpf\bmod p

B 君想知道 tt 轮之后所有人的分数,也就是 ft,0,ft,1,,ft,n1f_{t,0},f_{t,1},…,f_{t,n−1}

G 君:「诶,我发现这个数 pp 有特殊的性质诶!不存在两个正整数,使得他们倒数的和等于 3/p3/p!」

B 君:「G 君好棒!不过这个题怎么做呢?」

输入格式

第一行三个整数,表示 m,t,pm,t,p

第二行有 n=3mn=3^m 个整数,表示 f0,0,f0,1,,f0,n1f_{0,0},f_{0,1},…,f_{0,n−1}。保证 0f0,i<p0≤f_{0,i}<p

接下来的部分是一个数组 bb,第 11m+1m+1 个数,第 22mm 个数……第 m+1m+111 个数。

其中第 ii 行的第 jj 个数为 bi1,j1b_{i−1,j−1}i,j1,i+j2mi,j≥1,i+j−2≤m),保证 0bi,j<p0≤b_{i,j}<p

不存在两个正整数,使得他们倒数的和等于 3/p3/p。 即不存在正整数 x,y>0x,y>0,使得 1/x+1/y=3/p1/x+1/y=3/p

输出格式

输出 n=3mn=3^m 行,每行一个整数,表示每个人最终的得分。

其中第 ii 行表示第 ii 个人的得分 ft,if_{t,i}

1 1 10009
10 100 1000
2 3
4
4320
3240
2430
2 3 103
7 8 9 10 11 12 13 14 15
1 2 3
4 5
6
96
8
73
38
53
15
27
42
4

提示

对于所有数据,0m120≤m≤120t1090≤t≤10^91p1091≤p≤10^9