TopCoder

蔡兆豐
大家好,我是蔡兆豐。我們今天要介紹的書是我兒佳比。這本書是在講述一個名叫科。克萊爾的傳奇故事。他本來居住在童話社區,每個人都被要求。要一樣。

User's AC Ratio

100.0% (5/5)

Submission's AC Ratio

72.7% (8/11)

Tags

Description

碎屍萬段是一個幾何題技巧,顧名思義就是把題目中的幾何物件切成許多份。其中一個最常見的途是把圓轉成正很多邊形,就能用現有的多邊形方法去解決這些問題。

不過顯然這個方法有很多誤差問題,跑得也比較慢,而且出題者大多都很聰明,所以這個技巧很難在實際的地方用上。

可是今天不一樣,你要碎屍萬段的目標是一顆超立方蛋糕。

現在你手邊有的是 $n$ 維的超立方蛋糕,
如果把 $n$ 維空間中的點座標化成 $(x_1, x_2, \ldots, x_n)$,那 $n$ 維的蛋糕可以這樣想像:

  • $2 ^ n$ 顆頂點,在座標為 $\{\pm 1\} ^ n$ 的地方。
  • $n \cdot 2 ^ {n-1}$ 條邊,在所有座標只有一個維度不一樣的點對之間。
  • 蛋糕本體是 $\{(x_1, \ldots, x_n) \mid -1 \leq x_i \leq 1, \forall 1 \leq i \leq n\}$ 的集合。

每一刀當然也是 $n$ 維的超平面,也就是由 $a_1, a_2, \ldots, a_n, c$ 這 $n + 1$ 個參數所決定,表示這一刀會把所有
$a_1x_1 + a_2x_2 + \cdots + a_nx_n < c$ 跟 $a_1x_1 + a_2x_2 + \cdots + a_nx_n > c$ 的所有蛋糕都分開。
切在中間(也就是 $a_1x_1 + a_2x_2 + \cdots + a_nx_n = c$ )的不算,因為它會黏在刀子上。

你的目標是用最少的刀數切過所有的邊,也就是說所有 $n \cdot 2^ {n-1}$ 條邊,兩端的頂點都至少被某一刀切在兩邊。

Input Format

輸入第一行只有一個正整數 $n$,代表正立方體的維度。

  • $n \in \lbrace 2, 3, 4, 5, 6\rbrace$

Output Format

如果你覺得你需要切 $k$ 刀,那就在第一行輸出 $k$。
接下來再輸出 $k$ 行,每一行都按照順序輸出 $n + 1$ 個由空白分開的整數 $a_1, a_2, \ldots, a_n, c$,代表第 $i$ 刀要切的參數。

每一刀的參數必須要滿足下面的條件,不然會太難切。

  • $- 8 \cdot e \cdot 7 \leq a_1, a_2, \ldots, a_n, c \leq 8 \cdot e \cdot 7$。

其中 $e$ 是自然常數

保證在題目範圍內,最小的刀數在這個條件下可以達到。

另外你不可以學範例輸出(沒創意!),如果你這樣做你會得到 Wrong Answer 並倒扣整題的分數。

Sample Input 1

2

Sample Output 1

2
1 1 -1
1 1 1

Hints

Problem Source

Subtasks

No. Testdata Range Constraints Score
1 0 範例測資,$n = 2$ 5
2 1 $n = 3$ 10
3 2 $n = 4$ 15
4 3 $n = 5$ 20
5 4 $n = 6$ 50

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 262144 65536 1
1 1000 262144 65536 2
2 1000 262144 65536 3
3 1000 262144 65536 4
4 1000 262144 65536 5