問題一覧 > 通常問題

No.2426 Select Plus or Minus

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 149
作問者 : shobonvip / テスター : 0214sh7 noya2 👑 potato167 tassei903 ramdos ponjuice
14 ProblemId : 9994 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-08-14 18:07:09

問題文

22 以上の整数 NN が与えられます。変数 mm があり、最初は m=Nm=N です。

あなたは変数 mm に対して、11 回の操作で次を行うことができます。

  • mm偶数のとき、mmm/2m/2 に置き換える。
  • mm奇数のとき、3m+1,3m13m+1, 3m-1 の片方を選び、 mm をそれに置き換える。

次の 33 つの条件をすべて満たすような操作列を 11 つ構築してください。ただし、問題の制約下でそのような操作列が存在することが保証されます。

  1. 操作回数は 1000010000 以下である。
  2. 操作をすべて終えた後は m=1m=1 となっている。
  3. 各操作後の mm101810^{18} を超えない。

制約

  • 2N10152 \le N \le 10^{15}
  • NN は整数

入力

NN

出力

次の形式に従って、問題文の 33 つの条件をすべて満たす操作列を出力してください。

KK
c1c2cKc_1 c_2\cdots c_K

11 行目には、操作回数を表す整数 K (1K10000)K \ (1 \le K \le 10000) を出力してください。

22 行目には、 KK 文字出力してください。 ii 文字目は ii 番目に行う操作を表し、出力する文字 cic_i は次に従ってください。

  • /mm が偶数で、 mmm/2m/2 に置き換える操作
  • +mm が奇数で、 mm3m+13m+1 に置き換える操作
  • -mm が奇数で、 mm3m13m-1 に置き換える操作

サンプル

サンプル1
入力
7
出力
8
+/-/////

変数 mm は最初 m=7m = 7 です。この出力では操作は次のようにして行われ、33 つの条件を満たします。

11 回目の操作の後は m=3×7+1=22m = 3 \times 7 + 1 = 22 になる。

22 回目の操作の後は m=20/2=11m = 20 / 2 = 11 になる。

33 回目の操作の後は m=3×111=32m = 3 \times 11 - 1 = 32 になる。

44 回目の操作の後は m=32/2=16m = 32 / 2 = 16 になる。

55 回目の操作の後は m=16/2=8m = 16 / 2 = 8 になる。

66 回目の操作の後は m=8/2=4m = 8 / 2 = 4 になる。

77 回目の操作の後は m=4/2=2m = 4 / 2 = 2 になる。

88 回目の操作の後は m=2/2=1m = 2 / 2 = 1 になる。

条件を満たす操作方法ならよいので、次のような出力も認められます。操作回数を最小化する必要がないことに注意してください。

23
+/+/-/+//+/+///-/////-/
サンプル2
入力
5
出力
5
+////
サンプル3
入力
7217572745
出力
100
+//-//-/-////+/-/-//-/-////-/-/+//-////+///////-//+////-////+///+//-//////+/////+/+////+////-//+////

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。