幅優先探索ドリルのサムネイル
(問題 35)SWAP 1 COBOL(Beta)編(paizaランク S 相当)

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

問題

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

1,2,3,4,5,6,7,8,9 をそれぞれ 1 文字ずつ含む S に対して f(S) を以下のように定めます。

  • 「隣り合う 2 つの数字を入れ替える」という行為を操作と呼ぶ。123456789 から操作を繰り返して S にするとき、操作回数の最小値


  • 例えば f(123564789) は 123456789 → 123546789 → 123564789 と操作することで 123564789 にすることができ 2 回以下で 123564789 にする方法がないので、2 となります。

    整数 X が与えられるので、f(S) = X となる S を昇順で全て求めてください。

    入力される値

    X


    1 行目には 1 つの整数 X が与えられます。

    入力は合計で 1 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


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

    答えの数を A としたとき答えを A + 1 行で出力してください。

    1 行目には整数 A を出力してください。

    1 + i (1 ≦ i ≦ A) 行目には f(S) = X となる S を昇順に並び替えた時に i 番目に来る S を出力してください。

    条件

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

  • 0 ≦ X ≦ 36
  • 入力例1

    0

    出力例1

    1
    123456789

    入力例2

    1

    出力例2

    8
    123456798
    123456879
    123457689
    123465789
    123546789
    124356789
    132456789
    213456789

    入力例3

    2

    出力例3

    35
    123456897
    123456978
    123457698
    123457869
    123458679
    123465798
    123465879
    123467589
    123475689
    123546798
    123546879
    123547689
    123564789
    123645789
    124356798
    124356879
    124357689
    124365789
    124536789
    125346789
    132456798
    132456879
    132457689
    132465789
    132546789
    134256789
    142356789
    213456798
    213456879
    213457689
    213465789
    213546789
    214356789
    231456789
    312456789

    問題一覧へ戻る

    1. paizaトップ
    2. レベルアップ問題集
    3. 幅優先探索ドリル(言語選択)
    4. 問題一覧 COBOL(Beta)編
    5. (問題 35)SWAP 1 COBOL(Beta)編
    ページの先頭へ戻る