Universal Cup Judging System

Universal Cup

时间限制: 2.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓
统计

如你所知,你正在参加中国构造题挑战赛(CCPC)。毫无疑问,作为“构造王国”的出题学校——中山大学,非常渴望你能挑战一些相关的构造问题。

小 U 是构造王国的一名学生。在算法课上,小 U 学习了 MCOP(矩阵链乘法问题,Matrix Chain Ordering Problem)。以下是 MCOP 的介绍:

给定一个长度为 $n \ge 3$ 的正整数序列 $[w_1, w_2, \dots, w_n]$ 作为算法的输入。以下公式将 $n - 1$ 个矩阵相乘,最终得到一个新矩阵:

$$M = M_1 \times M_2 \times \dots \times M_{n-1}$$

其中 $M_i$ 是一个大小为 $w_i \times w_{i+1}$ 的矩阵。矩阵乘法满足结合律,因此改变相乘的顺序会得到相同的最终矩阵 $M$,但操作次数可能会有所不同。该问题的目标是在 $(n - 2)!$ 种可能的策略中找到一种最优的相乘策略,使得矩阵相乘所需的总操作次数最小。这里假设将大小为 $p \times q$ 和 $q \times r$ 的矩阵相乘将得到一个大小为 $p \times r$ 的矩阵,需要 $pqr$ 次操作。在最优策略下计算 $M$ 所需的最小总操作次数记为 $\text{MCOP}([w_1, w_2, \dots, w_n])$。

小 U 在课堂上已经学会了如何以足够好的时间复杂度解决这个问题。但作为构造王国的学生,小 U 自然而然地想到了以下问题:

给定一个整数 $X$,满足 $1 \le X \le 10^9$。你需要构造一个长度为 $l$ 的整数序列 $[a_1, a_2, \dots, a_l]$,满足以下要求:

  • $3 \le l \le 6$;
  • 对于所有 $i \in [1, l]$,$1 \le a_i \le 4000$;
  • $\text{MCOP}([a_1, a_2, \dots, a_l]) = X$。

小 U 已经使用在课堂上学到的算法实现了一个检查器(checker),而你需要做的是解决这个构造问题。

可以证明,对于任何输入 $X$,总是存在满足要求的构造。如果存在多个满足要求的构造,输出其中任意一个即可。

输入格式

本题包含多个测试用例。输入的第一行包含一个整数 $T$($1 \le T \le 500$),表示测试用例的数量。

对于每个测试用例,输入包含一行,其中有一个整数 $X$($1 \le X \le 10^9$),其含义已在题目中给出。

输出格式

对于每个测试用例:首先输出一行,包含一个整数 $l$($3 \le l \le 6$),表示构造序列的长度。然后输出一行,包含 $l$ 个整数,表示构造的序列。

样例

输入样例 1

2
90
10

输出样例 1

4
5 3 2 6
3
1 1 10

说明

对于第一个测试用例,构造的序列为 $[5, 3, 2, 6]$,这表示需要对大小分别为 $5 \times 3$、$3 \times 2$ 和 $2 \times 6$ 的三个矩阵进行链乘。考虑两种相乘策略:

  • 首先,将 $M_1$ 和 $M_2$ 相乘得到一个大小为 $5 \times 2$ 的矩阵,然后与 $M_3$ 相乘,对应表达式 $(M_1 \times M_2) \times M_3$。此时的总操作次数为 $5 \times 3 \times 2 + 5 \times 2 \times 6 = 90$;
  • 首先,将 $M_2$ 和 $M_3$ 相乘得到一个大小为 $3 \times 6$ 的矩阵,然后与 $M_1$ 相乘,对应表达式 $M_1 \times (M_2 \times M_3)$。此时的总操作次数为 $3 \times 2 \times 6 + 5 \times 3 \times 6 = 126$。

这里,目标是最小化总操作次数,因此 $\text{MCOP}([5, 3, 2, 6]) = \min(90, 126) = 90$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.