【题目描述】
给定一个素数p和一个N×N的矩阵A=Ai,j(1≤i,j≤N),矩阵A的元素是0到p−1之间的整数。
将矩阵A中所有的0替换为1到p−1之间的整数,可以得到矩阵B。如果矩阵A中0的个数为K,那么可以得到(p−1)K个不同的矩阵B。
请计算所有可能的矩阵B的Bp
的总和,并求出总和矩阵中每个元素对p取余的结果。
【输入格式】
输入格式如下
NpA1,1⋯A1,N⋮AN,1⋯AN,N
【输出格式】
请输出N行。
第i行输出第i行第j列(j=1,...,N)的所有可能的矩阵B的Bp的总和的(i,j)元素对p取余的结果,用空格分隔。
【样例组】
【输入1】
2 3
0 1
0 2
【输出1】
0 2
1 2
【输入2】
0 2
1 2
【输出2】
1 1 1
1 1 1
1 1 1
【输入3】
4 13
0 1 2 0
3 4 0 5
0 6 0 7
8 9 0 0
【输出3】
8 0 6 5
11 1 8 5
8 0 4 12
8 0 1 9
【提示/说明】
【样例解释#1】
Bp所有可能如下:
(1112)3=(58813)(1212)3=(918918)(2112)3=(14131314)(2212)3=(20281420)
输出每个元素对 p=3 取余的结果。
【样例解释#2】
1111111112=333333333
输出每个元素对 p=2 取余的结果。
【数据范围】
1≤N≤100
p是一个素数,使得 1≤p≤109。
0≤Ai,j≤p−1
所有输入值均为整数。