【ループメニュー2】> 【約数の列挙】STEP: 11 加算された数列の最大値 (paizaランク D 相当) [難易度: 1225 ±31]
※リンク先へ移動するためには[paiza]へのログインが必要です。
N 個の整数 a_1, a_2, ..., a_N が与えられます。
a_i に i を足したとき、a_1 , ... , a_N の最大値を出力してください。
入力値(例)
5
1 2 3 4 5
出力値(例)
10
解答例
1 2 3 4 5 6 7 8 |
<?php $n = trim(fgets(STDIN)); $number = explode(" ", trim(fgets(STDIN))); for($i = 0; $i < $n; $i++) { $array[] = $number[$i] + ($i + 1); } echo max($array); ?> |
解説
これは、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 で、
一番大きいのは5+5=10なので、10を出力するということらしいです。
入力値
5
5 4 3 2 1 のときは、
5+1=6
4+2=6
3+3=6
2+4=6
1+5=6 なので、6を出力する。
入力値
5
100 1 1 1 1 のときは、
100+1=101
1+2=3
1+3=4
1+4=5
1+5=6 なので、101を出力する。
1から順に足すので、for文で順番に足して$arrayに配列として加えて、for文を抜けて最大値を表示するようにしました。
感想
問題文の意味がわからなくて悩みました。
a_iとかiとかはどこから出てくるのか?普通のエンジニアだったらすんなり解けるのでしょうか?問題を読み解くのもスキルの一つなのかなと苦戦したpaiza-問題でした。