ループメニュー1】> 【数列同士の引き算】STEP: 2 数列の A 番目から B 番目までの和 (paizaランク D 相当) [難易度: 1196 ±23]

※リンク先へ移動するためには[paiza]へのログインが必要です。

問題文

長さ N の数列 a (a_1, a_2, ..., a_N) と、整数 A, B が与えられます。
この数列の a_A から a_B までの和を計算し、出力してください。

入力値(例)
5 1 3
1 2 3 4 5

出力値(例)
6

解答例

解説

1行目に2行目の数列の長さである整数Nとその数列の何番目から何番目を取り出すのかの整数A,Bがあるので受け取ります。

次に2行目の数列をexplode()で一つずつ値を受け取ります。

array_slice()で配列の切り取り位置を指定します。
5 1 3 の場合は、1(a)から3(b)になるのですが配列は0から始まるので(-1)にします。

array_slice(配列, 開始位置 [, 要素数])

第一引数 array(必須):配列
第二引数 offset(必須):切り取る配列の0から数えた開始位置
第三引数 length(任意):切り取る件数を指定
第四引数 preserve_keys(任意):取得した配列のキーを0からの連番にするか、元のキーを参照するかを指定

最後に、スライスした配列を合計して出力します。

感想

最初、array_slice()の第三引数の考え方が間違っていて、array_slice($input, ($a - 1), $b))としていたらテスト4が通過しなくて75点でした。第三引数はいくつ切り取るかなのでBから(A - 1)を引くと切り取る数が算出できます。

ループ問題なのにループを使わなかったのはいいのかな?...(*'ω'*)

おすすめの記事
スポンサーリンク