No.2118 遺伝的有限集合の数え上げ
タグ : / 解いたユーザー数 85
作問者 : 👑

問題文
入力に非負整数 が与えられます。
各非負整数 に対し集合 を次の条件を満たす集合 全体の集合と定めます:
- 以下の 条件を全て満たす 非負整数 が存在する:
- である。(従って の二進法表記における の位が意味を持つ)
- の二進法表記における の位( 桁目)が である。
- である。
一見すると の定義で が使われていて循環論法を起こしているようですが、 の定義で使われているのは そのものではなく を満たす(従って 以下であり より真に小さい)非負整数 に対する だけであるため循環論法は生じません。詳しくはサンプルを確認してください。
このような定義は再帰的定義と呼ばれ、数学やプログラミングの様々な局面で現れます。
を求めてください。
入力
入力は次の形式で標準入力から与えられます:
制約
入力は以下の制約を満たします:
- は 以下の非負整数
出力
を 行に出力し、最後に改行してください。ただし集合を出力する際は以下の手順に従ってください:
- まず、半角左波カッコ
{
を出力する。 - 次に、その全ての要素を好きな順に半角コンマ
,
区切りで重複なく出力する。 - その後、半角右波カッコ
}
を出力する。
例えば空集合 を出力するには、まず{
を出力し、次に要素はないので何も出力せず、その後}
を出力することになります。従って結局{}
を出力することになります。
なおこの問題はスペシャルジャッジ問題です。正解は 通りと限りませんが、 つだけ出力してください。
サンプル
サンプル1
入力
0
出力
{}
を満たす非負整数 は存在しないため、 の要素であるための条件を満たす集合 は存在しません。すなわち は空集合 となります。
空集合 を出力するには、出力フォーマットで説明したようにまず{
を出力し、次に要素はないので何も出力せず、その後}
を出力することになります。従って結局{}
を出力することになります。
サンプル2
入力
1
出力
{{}}
を満たす非負整数 は のみであり、かつ の二進法表記は であるため、 の要素であるための条件を満たす集合 は のみとなります。サンプル1の結果を踏まえて であるので、すなわち は集合 となります。
集合 を出力するには、まず{
を出力し、次に要素は だけなのでサンプル1の結果を踏まえて{}
を出力し、その後}
を出力することになります。従って結局{{}}
を出力することになります。
なお要素を重複させずに出力するよう指定されているので、{{},{}}
や{{},{},{}}
を出力してしまうと WA となってしまいます。
サンプル3
入力
2
出力
{{{}}}
を満たす非負整数 は と のみであり、かつ の二進法表記は であるため、 の要素であるための条件を満たす集合 は のみとなります。サンプル2の結果を踏まえて であるので、すなわち は集合 となります。
集合 を出力するには、まず{
を出力し、次に要素は だけなのでサンプル2の結果を踏まえて{{}}
を出力し、その後}
を出力することになります。従って結局{{{}}}
を出力することになります。
なお要素を重複させずに出力するよう指定されているので、{{{}},{{}}}
や{{{}},{{}},{{}}}
を出力してしまうと WA となってしまいます。
サンプル4
入力
3
出力
{{},{{}}}
を満たす非負整数 は と のみであり、かつ の二進法表記は であるため、 の要素であるための条件を満たす集合 は と のみとなります。サンプル1とサンプル2の結果を踏まえて と であるので、すなわち は集合 となります。
集合 を出力するには、まず{
を出力し、次に要素は と だけなのでサンプル1とサンプル2の結果を踏まえて{}
と{{}}
を好きな順に半角コンマ,
区切りで出力し、その後}
を出力することになります。従って結局{{},{{}}}
か{{{}},{}}
を出力することになります。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。