1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 繰り返し二乗法・ダブリングメニュー(言語選択)
  4. 問題一覧 Bash(Beta)編
  5. 二乗 Bash(Beta)編

繰り返し二乗法・ダブリングメニューのサムネイル
二乗 Bash(Beta)編(paizaランク B 相当)

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

問題

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

繰り返し二乗法は、x^n の形の累乗計算を高速におこなう手法です。
具体的には、n の 2 進数表記を用いて、x^{2^i} のうち必要なものだけを掛け合わせることで高速に計算します。
たとえば、x^{11} = x^{1 + 2 + 8} = x^{2^0 + 2^1 + 2^3} = x^{2^0} × x^{2^1} × x^{2^3} となります。

では、実際に x^{2^i} を計算してみましょう。
x と k が与えられるので、x^{2^0}, x^{2^1}, x^{2^2}, ..., x^{2^{k-1}} を計算してください。
ただし、答えは非常に大きくなる可能性があるので、10000000 = 10^7 で割ったあまりを出力してください。

ヒント: x^{2^i} = x{2^{i-1} × 2} = (x^{2^{i-1}})^2 です。

入力される値

x k


・ 1 行目に整数 x と整数 k が半角スペース区切りで与えられます。


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

合計 k 行出力してください。
i 行目には、x^{2^{i-1}} を 10000000 で割ったあまりを出力してください。

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

条件

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

・ 入力はすべて整数
・ 0 ≦ x < 2^20
・ 1 ≦ k ≦ 20

入力例1

2 5

出力例1

2
4
16
256
65536

入力例2

100001 2

出力例2

100001
200001

問題一覧へ戻る

ページの先頭へ戻る