#P15569. Product_of_Permutations順列の積

    ID: 14781 传统题 2000ms 1024MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>算法基础构造数论数学模拟CF2500模运算

Product_of_Permutations順列の積

题目描述

给定整数 r,cr,c。请判断是否存在一个 rrcc 列的矩阵,满足以下条件;如果存在,请构造其中一个。

设矩阵第 i+1i+1 行、第 j+1j+1 列的元素为 ai,ja_{i,j},其中下标从 00 开始。

矩阵需要满足:

  1. 每一行都恰好包含一次 0,1,2,,c10,1,2,\ldots,c-1
  2. 对任意列 jj,该列所有元素的乘积模 cc 后等于列号 jj,即
$$a_{0,j}\times a_{1,j}\times\cdots\times a_{r-1,j}\equiv j\pmod c。$$

输入格式

输入由多个数据集组成,每个数据集格式如下:

r c

其中 2r1000002\le r\le 1000002c1000002\le c\le 100000

输入以一行 0 0 结束。所有数据集中 r×cr\times c 的总和不超过 500000500000

输出格式

对于每个数据集:

  • 如果不存在满足条件的矩阵,输出一行 No
  • 如果存在,先输出一行 Yes,然后输出一个满足条件的矩阵。

矩阵输出格式如下:

a_{0,0} a_{0,1} ... a_{0,c-1}
a_{1,0} a_{1,1} ... a_{1,c-1}
...
a_{r-1,0} a_{r-1,1} ... a_{r-1,c-1}

若存在多个合法矩阵,输出任意一个即可。

样例输入

3 5
6 6
0 0

样例输出

Yes
0 3 1 4 2
0 2 4 1 3
0 1 3 2 4
No