#HK4794. 「RMI 2021」Present

「RMI 2021」Present

题目描述

题目译自 Romanian Master of Informatics 2021 Day1 T2 「Present

莱卡决定为她的好朋友高地女巫阿兹莎准备一份礼物。出于未知的原因,这份礼物将是一组有限的正整数。如果只有这些,选择礼物将是一件简单的事情,但几个因素使这件事变得复杂。

首先,莱卡的竞争对手弗拉托特拥有神秘的魔法力量:给定两个整数 xxyy,她可以创建 xxyy 的最大公约数(即 gcd(x,y)\gcd(x, y))。如果莱卡送了一份礼物,弗拉托特可以立即添加到礼物中(即如果她送了一组 AA,其中 x,yAx, y \in A,但 gcd(x,y)A\gcd(x, y) \notin A),那么弗拉托特就会立即嘲笑她的对手。因此,莱卡的礼物不能通过弗拉托特的魔法力量进行改进:如果她送了 AA,那么对于所有的 x,yAx, y \in A,必须满足 gcd(x,y)A\gcd(x, y) \in A

其次,莱卡希望礼物具有某种特殊意义。自从她遇到阿兹莎已经过去了 KK 天,她希望礼物能体现这一事实。因此,她将满足上述条件的所有集合按照莱卡顺序(如下所述)排列,得到一个无限的有限集合序列 S0,S1,S_{0}, S_{1}, \ldots 她想要选择并送出集合 SKS_{K}。你能帮她做到吗?

莱卡顺序:取两个集合 AABB。那么,当且仅当 maxA<maxB\max A<\max BmaxA=maxB\max A=\max BA\{maxA}A \backslash\{\max A\} 在莱卡顺序中先于 B\{maxB}B \backslash\{\max B\} 时,AA 在莱卡顺序中先于 BB。特别的,令 max=\max \emptyset=-\infty。请注意,对于有限的正整数集合,这总是明确定义的。

输入格式

输入包含多组数据。第一行包含一个整数 TT。接下来的 TT 行每行描述了一组测试数据,每行包含一个整数 KK ,我们想要知道 SKS_{K}

输出格式

对于这 TTKK 的值中的每一个,输出集合 SKS_{K}。要输出一个集合,输出一行,首先是它的元素个数,然后是它的元素,按升序排列。

5
0
1
2
3
4
0
1 1
1 2
2 1 2
1 3

请注意,$S_{0}=\emptyset, S_{1}=\{1\}, S_{2}=\{2\}, S_{3}=\{1,2\}, S_{4}=\{3\}, S_{5}=\{1,3\}, S_{6}=\{1,2,3\}, S_{100}=$ {1,2,3,7,8},S1000={1,2,3,5,10,11,12}\{1,2,3,7,8\}, S_{1000}=\{1,2,3,5,10,11,12\}。这些正是样例中输出的集合(以及它们的大小)。请注意,S6{2,3}S_{6} \neq\{2,3\},这是因为 2,3{2,3}2,3 \in\{2,3\},但 gcd(2,3)=1\operatorname{gcd}(2,3)=1 \notin {2,3}\{2,3\}

4
5
6
100
1000
2 1 3
3 1 2 3
5 1 2 3 7 8
7 1 2 3 5 10 11 12

数据范围与提示

对于所有输入数据,满足:

  • 1T51 \leq T \leq 5

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 88 0K1000 \leq K \leq 100
22 2121 0K1060 \leq K \leq 10^6
33 4141 0K51080 \leq K \leq 5\cdot 10^8
44 1414 0K1090 \leq K \leq 10^9
55 1616 0K1.51090 \leq K \leq 1.5\cdot 10^9