#P16832. [NWRRC 2022]Joking?

[NWRRC 2022]Joking?

题目描述

Julia 想为 nn 名玩家设计一款新的桌游。游戏开始前,玩家需要决定行动顺序。为了公平,每一种玩家排列都应该以相同概率出现。

Julia 打算制作 nn 个不同的 kk 面骰子,每名玩家使用其中一个骰子。所有玩家各掷一次:点数最小的玩家最先行动,点数第二小的玩家第二个行动,以此类推。

为了避免平局,所有骰子面上出现的数字必须两两不同。

如果要求排列概率完全相同,这会成为一道很漂亮的数学题。不过这是程序设计竞赛,因此允许存在少量误差。你需要构造这些骰子,使任意两个玩家排列出现概率的相对差不超过 0.2%0.2\%

形式化地,掷出全部 nn 个骰子共有 knk^n 种等可能结果。对于每个排列 PP,记导致该排列的结果数为 f(P)f(P)。对于任意两个排列 P,QP,Q,必须满足

f(P)f(Q)max(f(P),f(Q))0.002.\frac{|f(P)-f(Q)|}{\max(f(P),f(Q))}\le 0.002.

你可以自行选择 kk,但必须满足 k120k\le 120

输入格式

一行包含整数 nn,表示玩家数量。

数据范围

2n5.2\le n\le 5.

输出格式

第一行输出整数 kk,表示每个骰子的面数:

1k120.1\le k\le 120.

接下来 nn 行描述 nn 个骰子。每行输出 kk 个整数,所有整数都必须位于 11knkn 之间,并且所有骰子使用的全部 knkn 个整数必须两两不同。

样例 1

2
2
1 4
2 3

样例 2

3
16
3 7 9 10 12 17 18 19 28 32 33 35 38 40 43 48
1 2 6 13 14 20 22 26 27 29 30 36 37 39 44 46
4 5 8 11 15 16 21 23 24 25 31 34 41 42 45 47

样例说明

第一组样例中,两种玩家排列出现的概率均为 1/21/2

第二组样例共有

163=409616^3=4096

种结果。排列 [2,1,3][2,1,3][3,1,2][3,1,2] 各出现 682682 次,其余排列各出现 683683 次。因此最大与最小概率的相对差为

6836826830.146%.\frac{683-682}{683}\approx0.146\%.