QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#960. 出力制限超過

Statistics

私たちは皆、$\binom{n}{k} = \frac{n \cdot (n-1) \cdot \dots \cdot (n-k+2) \cdot (n-k+1)}{1 \cdot 2 \cdot \dots \cdot (k-1) \cdot k}$ が任意の $0 \le k \le n$ に対して整数であることを知っています。しかし、分子と分母の因子の間にマッチングを与えることでこれを証明できたら素晴らしいと思いませんか?

左側に $k$ 個、右側に $k$ 個の頂点を持つ二部グラフを構築しましょう。左側の $i$ 番目の頂点は分子の因子 $(n + 1 - i)$ に対応し、右側の $j$ 番目の頂点は分母の因子 $j$ に対応します。$j$ が $(n + 1 - i)$ を割り切る場合に限り、頂点 $i$ と $j$ の間に辺が存在するとします。この二部グラフに完全マッチングが存在する場合、数 $k$ は $n$ に対して「証明可能」であると言います。

$n$ が与えられたとき、$0 \le k \le n$ を満たす各 $k$ について、$k$ が証明可能かどうかを判定してください。

入力

入力は1行のみで、整数 $n$ ($0 \le n \le 10^{18}$) が与えられます。

出力

長さ $(n + 1)$ の '0' と '1' からなる文字列を出力してください。$(k + 1)$ 番目の文字は、$k$ が $n$ に対して証明可能である場合に限り '1' とします。

これでは出力制限を超えてしまうと思うでしょうか?うーん……わかりました。文字列を圧縮しましょう。

$s_0 = \text{“0”}$、$s_1 = \text{“1”}$ とします。$s_2, s_3, \dots, s_t$ を定義できます。文字列 $s_i$ は、それ以前に定義されたいくつかの文字列の連結である必要があります。形式的には、$\forall i(2 \le i \le t) : s_i = s_{j_1} + s_{j_2} + \dots + s_{j_{k_i}}$ であり、ここで $1 \le k_i$ かつ $\forall r(1 \le r \le k_i) : j_r < i$ です。文字列 $s_t$ が問題の答えとなる必要があります。

1行目に整数 $t$ ($2 \le t \le 500$) を出力してください。 続く $t - 1$ 行に $s_i$ の記述を出力してください。各記述は $k_i \ j_1 \ j_2 \ \dots \ j_{k_i}$ という形式で、$1 \le k_i$ かつ $0 \le j_r < i$ を満たす必要があります。

記述の合計長は $10\,000$ を超えてはなりません:$\sum_{i=2}^t k_i \le 10\,000$。

すべての有効なテストケースにおいて、これらの制限を守りながら答えの文字列を構築する方法が存在することが示せます。もし複数の構築方法がある場合は、そのうちのどれを出力しても構いません。$t$ や記述の合計長を最小化する必要はないことに注意してください。

入出力例

入出力例 1

1
2
2 1 1

入出力例 2

0
2
1 1

入出力例 3

7
4
2 1 1
4 1 2 0 0
3 3 1 2

注記

3番目の例において:$s_2 = s_1 + s_1 = \text{“1”} + \text{“1”} = \text{“11”}$、$s_3 = s_1 + s_2 + s_0 + s_0 = \text{“1”} + \text{“11”} + \text{“0”} + \text{“0”} = \text{“11100”}$、$s_4 = s_3 + s_1 + s_2 = \text{“11100”} + \text{“1”} + \text{“11”} = \text{“11100111”}$ となります。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#320EditorialOpen题解jiangly2025-12-14 07:04:34View

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.