Universal Cup Judging System

Universal Cup

시간 제한: 2.0 s 메모리 제한: 1024 MB 총점: 100 해킹 가능 ✓
통계

Come sai, stai partecipando al Chinese Constructive Problem Contest (CCPC) e, senza dubbio, l'università proponente, la Sun Yat-sen University, in quanto Regno della Costruzione, è impaziente di vederti affrontare alcuni problemi correlati.

Little U è uno studente del Regno della Costruzione. Durante una lezione di algoritmi, Little U ha studiato il problema MCOP (Matrix Chain Ordering Problem). Ecco un'introduzione a MCOP:

Data una sequenza di interi positivi di lunghezza $n \ge 3$, $[w_1, w_2, \dots, w_n]$, come input dell'algoritmo, la seguente formula moltiplica $n - 1$ matrici per ottenere infine una nuova matrice:

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

dove $M_i$ è una matrice di dimensione $w_i \times w_{i+1}$. La moltiplicazione tra matrici soddisfa la proprietà associativa, quindi cambiando l'ordine di moltiplicazione si otterrà la stessa matrice finale $M$, ma il numero di operazioni può variare. L'obiettivo del problema è trovare una strategia di moltiplicazione ottimale tra le $(n - 2)!$ strategie possibili, in modo da minimizzare il numero totale di operazioni necessarie per la moltiplicazione delle matrici. Qui si assume che moltiplicare matrici di dimensioni $p \times q$ e $q \times r$ produca una matrice di dimensione $p \times r$, richiedendo $pqr$ operazioni. Il numero totale minimo di operazioni necessarie per calcolare $M$ secondo la strategia ottimale è indicato con $\text{MCOP}([w_1, w_2, \dots, w_n])$.

Little U ha imparato a lezione come risolvere questo problema con una complessità temporale sufficientemente buona, ma come studente del Regno della Costruzione, Little U ha pensato naturalmente al seguente problema:

Dato un intero $X$ che soddisfa $1 \le X \le 10^9$, devi costruire una sequenza di interi di lunghezza $l$, $[a_1, a_2, \dots, a_l]$, che soddisfi i seguenti requisiti:

  • $3 \le l \le 6$;
  • Per ogni $i \in [1, l]$, $1 \le a_i \le 4000$;
  • $\text{MCOP}([a_1, a_2, \dots, a_l]) = X$.

Little U ha già implementato un verificatore (checker) utilizzando l'algoritmo imparato a lezione, e ciò che devi fare è risolvere questo problema costruttivo.

Input

Questo problema contiene più casi di test. La prima riga dell'input contiene un intero $T$ ($1 \le T \le 500$), che rappresenta il numero di casi di test.

Per ciascun caso di test, l'input è costituito da una singola riga con un intero $X$ ($1 \le X \le 10^9$), il cui significato è stato descritto nel problema.

Output

Per ciascun caso di test: stampa prima una riga con un intero $l$ ($3 \le l \le 6$), che rappresenta la lunghezza della sequenza costruita. Poi stampa una riga con $l$ interi, che rappresentano la sequenza costruita.

Si può dimostrare che per qualsiasi input $X$ esiste sempre una costruzione che soddisfa i requisiti. Se esistono più costruzioni che soddisfano i requisiti, stampane una qualsiasi.

Esempio

Input di esempio 1

2
90
10

Output di esempio 1

4
5 3 2 6
3
1 1 10

Nota

Per il primo caso di test, la sequenza costruita è $[5, 3, 2, 6]$, il che rappresenta la necessità di eseguire una moltiplicazione a catena di tre matrici di dimensioni $5 \times 3$, $3 \times 2$ e $2 \times 6$. Consideriamo due strategie di moltiplicazione:

  • Moltiplicare prima $M_1$ e $M_2$ per ottenere una matrice di dimensione $5 \times 2$, e poi moltiplicare per $M_3$, il che corrisponde all'espressione $(M_1 \times M_2) \times M_3$. Il numero totale di operazioni in questo caso è $5 \times 3 \times 2 + 5 \times 2 \times 6 = 90$;
  • Moltiplicare prima $M_2$ e $M_3$ per ottenere una matrice di dimensione $3 \times 6$, e poi moltiplicare per $M_1$, il che corrisponde all'espressione $M_1 \times (M_2 \times M_3)$. Il numero totale di operazioni in questo caso è $3 \times 2 \times 6 + 5 \times 3 \times 6 = 126$.

Qui l'obiettivo è minimizzare il numero totale di operazioni, quindi $\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.