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

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

問題

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

素数 P を 500069 とします。P 未満の正整数 X に対して rev(X) を X を leading 0 をつけ 6 桁に揃えた後、文字列としてリバースした数字とします。

例えば、rev(20007) = 700020、rev(103568) = 865301 です。f(X, Z) を以下のように定めます。

  • 「現在の数字を A としたときに、A が 0 でなければ A + A, A + rev(A) (計算は mod P 上で行う)のいずれかに置き換える」というのを操作とする。X から Z に操作を繰り返してするとき、操作回数の最小値。


  • 整数 X, Z が与えられます。f(X, Z) を求めてください。操作をおこない 0 になった場合、その後操作が出来ないことに注意してください。

    なお、今回の問題は制約により、必ず X を Z にすることが出来ることが保証されています。

    入力される値

    X Z


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

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


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

    答えを 1 行で出力してください。

    条件

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

  • 1 ≦ X, Z < P
  • 入力例1

    273112 467625

    出力例1

    3

    入力例2

    77777 77777

    出力例2

    0

    問題一覧へ戻る

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