loj#P6790. 「ICPC World Finals 2020」扑克牌学
「ICPC World Finals 2020」扑克牌学
题目描述
伟大的魔术大师 Cardoni 有一副标有 到 的扑克牌。他会用这副扑克牌表演如下的魔术:
Cardoni 会先将这些扑克牌正面朝上,按从 到 的顺序一行一行地把这些扑克牌放在一个 列的网格中。然后让一位观众选择 到 之间的一个整数(包括两端),并只让观众自己知道。观众会指出这三列中哪一列包含着他选中的扑克牌。然后魔术师会按列取走扑克牌,并第二个取走指定列的扑克牌(取走其他两列扑克牌的顺序并不重要)。取走每列的扑克牌时,扑克牌需正面向上,从每列第一张牌开始取,之后取走的扑克牌立即放在之前取走的最后一张扑克牌下面。这些牌再按牌堆中从上到下的顺序,按行从上到下摆成三列。这个过程再重复两遍;每一次,观众指定的列都是魔术师取扑克牌的第二列。在这样重复三次之后,Cardoni 会说:「我已经完全参透你在想什么了,你选择的牌就在现在牌阵的中心。」并且这是真的——所选择的牌整好位于牌阵的中心(第 行第 列)。此外,无论之后再进行多少次指出牌所在列之后重新摆牌的操作,所选择的牌仍会位于固定的位置。
这个操作只要保证包含秘密数字的列是第二个取走的列,并重新摆牌,那么无论选择什么数字最后一定会成功。
Cardoni 想知道他是否能将这个魔术用在不同数量的扑克牌,行数和列数上,并实验在观众指定列之后,在第几次取牌时取走指定列才能达到效果。然而,这不是一个简单的问题。例如,当用 张牌,排成 行 列,并在重新摆牌前第二个拿走指定列的牌时,编号为 的牌会最终固定位于第 行第 列,编号为 的牌会最终固定位于第 行第 列。这两个位置也都不是牌阵的两个中心位置(第 或第 行第 列)。此外,Cardoni 也不确定在选择的牌达到一个固定位置前,「指定列并重新摆牌」的操作要多少轮。
给出牌阵的行数和列数,请帮 Cardoni 编排他的魔术,使得只有一个离中心尽可能近的固定位置。
输入格式
输入包含一行两个整数 ,分别表示在表演时牌阵的行数和列数。扑克牌编号为 到 ,初始时按递增顺序一行一行排列。
输出格式
输出一行四个数 ,意义如下:
- 观众指定的列应该在第 次取列时选取;
- 利用这个 的取值,会让观众选择的任意牌最终都到达第 行第 列这一固定位置;
- 是让观众选择的任意牌到达这个固定位置所要操作的最多轮数。
选择的 值要使得最终的固定位置 离任意牌阵中心(一个,两个或四个)尽可能近。 和 之间的距离为 。如果多于一个 的取值可以取得相同的距离,选择最小的 。
7 3
2 4 2 3
8 3
1 1 1 3