【ループメニュー2】> 【約数の列挙】STEP: 12 加算された数列の最小値 (paizaランク D 相当) [難易度: 1126 ±33]
※リンク先へ移動するためには[paiza]へのログインが必要です。
N 個の整数 a_1, a_2, ..., a_N が与えられます。
a_i に i を足したとき、N 個の整数の最小値を出力してください。
入力値(例)
5
1 2 3 4 5
出力値(例)
2
解答例
1 2 3 4 5 6 7 8 |
<?php $n = trim(fgets(STDIN)); $number = explode(" ", trim(fgets(STDIN))); for($i = 1; $i <= $n; $i++) { $result[] = $number[$i - 1] + $i; } echo min($result); ?> |
解説
これは、STEP11の最大値を求めるのと同じで、a_1に1、1_2に2...a_nにnと足して、その中での最小値を求める問題でした。
入力値
5
1 2 3 4 5 のとき、
1+1=2
2+2=4
3+3=6
4+4=8
5+5=10 で、
一番小さいのは1+1=2なので、2を出力するということですね。
入力値
5
5 4 3 2 1 のときは、
5+1=6
4+2=6
3+3=6
2+4=6
1+5=6 なので、6を出力する。
1から順に足すので、for文で順番に足して$resultに配列として加えて、for文を抜けて最小値を表示するようにしました。