1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ヒープダイクストラメニュー(言語選択)
  4. 問題一覧 Erlang(Beta)編
  5. 二分木の先祖

ヒープダイクストラメニューのサムネイル
二分木の先祖 (paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

根を 0 として、各ノードに順番に番号が割り当てられた二分木を考えます。この二分木では、親ノードの番号を 2 倍して 1 または 2 を足したものが子ノードの番号となっています。

整数 N が与えられます。番号 N のノードから番号 0 の根まで親ノードを辿っていき、その辿った親ノードの番号を順番に半角スペース区切りで出力してください。

入力例 1 の場合、図から分かるように、ノード 5 の親はノード 2 で、ノード 2 の親は ノード 0 であり、ノード 0 は根であるので、出力は

2 0
となります。

入力される値

N

  • 1 行目に、整数 N が与えられます。

  • 入力値最終行の末尾に改行が1つ入ります。
    文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
    期待する出力

    番号 N のノードから根まで辿ったときの親ノードの番号を順番に半角スペース区切りで一行で出力してください。出力の右端は必ず 0 となります。

    また末尾に改行をいれ、余計な文字、空行を含んではいけません。

    条件

    すべてのテストケースにおいて、以下の条件をみたします。

  • 入力はすべて整数

  • 1 ≦ N ≦ 10^5
  • 入力例1

    5

    出力例1

    2 0

    入力例2

    4

    出力例2

    1 0

    問題一覧へ戻る

    ページの先頭へ戻る