Universal Cup Judging System

Universal Cup

Limite de temps : 2.0 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓
Statistiques

眾所周知,你而家參加緊中國構造題競賽(Chinese Constructive Problem Contest, 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 \cdots \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),而你需要做嘅就係解決呢個構造問題。

輸入

呢題包含多組測試資料。輸入嘅第一行包含一個整數 $T$($1 \le T \le 500$),代表測試資料嘅組數。

對於每組測試資料,輸入包含一行,入面有一個整數 $X$($1 \le X \le 10^9$),其意義已經喺題目入面畀出。

輸出

對於每組測試資料:首先輸出一行包含一個整數 $l$($3 \le l \le 6$),代表所構造序列嘅長度。然後輸出一行包含 $l$ 個整數,代表所構造嘅序列。

可以證明對於任何輸入 $X$,總係存在滿足要求嘅構造。如果有唔止一種構造滿足要求,輸出其中任意一種即可。

範例

範例輸入 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.