AT_s8pc_2_f Range Sum Queries
Description
[problemUrl]: https://atcoder.jp/contests/s8pc-2/tasks/s8pc_2_f
数列$ A $があります。
$ A= ${$ {b}^{0},{b}^{1},{b}^{2},…,{b}^{a-1} $}とします。
$ c $ 回, 次のような操作をする。
- すべての $ i $ に対して, $ A_i= $ current $ A_0+A_1+,...+A_i $とする。
例えば、$ a=4,b=3,c=2 $のとき、次のようになります。
1 3 9 27 1回目 1 4 13 40 2回目 1 5 18 58一番最後の操作が終わったときの$ A_{a-1} $の値を$ 1,000,000,007 $で割った余りを出力してください。上の例の場合、答えは$ 58 $となります。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ a $ $ b $ $ c $
- $ 1 $ 行目には, $ a,b,c $ が空白区切りで与えられる。
- $ a $は数列の長さです。
- $ b $は、数列の初期値に関係する定数です。$ i $番目の要素は、$ {b}^{i} $です。一番左を$ 0 $番目とします。
- $ c $は、操作をする回数です。
Output Format
出力は以下の形式で標準出力に従うこと。
- $ c $ 回操作をした後の数列の最後の要素の値を$ 1,000,000,007 $で割った余りを$ 1 $行に出力してください。
Explanation/Hint
### 制約
- $ 1≦a≦100,000 $
- $ 1≦b,c≦1,000,000,000 $
### 小課題
小課題 $ 1 $ \[ $ 12 $ 点 \]
- $ 1≦a,b,c≦1,000 $ を満たす。
小課題 $ 2 $ \[ $ 48 $ 点 \]
- $ 1≦a,b,c≦100,000 $を満たす。
小課題 $ 3 $ \[ $ 40 $ 点 \]
- 追加の制約はない。
### Sample Explanation 1
問題文中の例と同じです。
### Sample Explanation 2
以下のようになります。 1 1 1 1 1 1 1回目 1 2 3 4 5 6 2回目 1 3 6 10 15 21 3回目 1 4 10 20 35 56 4回目 1 5 15 35 70 126 5回目 1 6 21 56 126 252
### Sample Explanation 3
$ 1,000,000,007 $で割った余りを求めることに注意してください。