【DPメニュー】> 【漸化式】STEP: 2 2項間漸化式 2 (paizaランク C 相当) [難易度: 1757 ±15]
※リンク先へ移動するためには[paiza]へのログインが必要です。
整数 x, d, Q と Q 個の整数 k_1, k_2, ... , k_Q が与えられます。
次のように定められた数列の k_i 項目の値を順に出力してください。
・ a_1 = x
・ a_n = a_{n-1} + d (n ≧ 2)
入力値(例)
0 7
5
1
2
3
4
5
出力値(例)
0
7
14
21
28
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php list($x, $d) = explode(" ", trim(fgets(STDIN))); $a[1] = $x; for ($i = 2; $i <= 1000; $i++) { $a[$i] = $a[$i - 1] + $d; } $q = trim(fgets(STDIN)); for($i = 0; $i < $q; $i++) { $k = trim(fgets(STDIN)); echo $a[$k]. "\n"; } ?> |
解説
条件が 1 ≦ Q ≦ 1,000 となっているので、あらかじめ1000までの値を求めておき、各k_iに対して求めておいたa[k]を出力します。
まずは、数列の各項の値を保存する1次元配列を用意し、for文のループでa_2からa_1000まで順に漸化式に従って計算します。
そして、k_iを入力として受け取り、a[k]を出力することをQ回繰り返します。