演習課題「累積和を求める」
整数 n と要素数 n の配列 a が与えられるので、この配列の累積和を半角スペース区切りで出力してください。
今回考える累積和は、先頭 0 個の和を考慮するものとします。
入力を受け取るコードと出力用の関数 printArray がすでに用意されているので、コードを書き足してプログラムを完成させてください。
期待する出力値
0 1 3 6 10 15
演習課題「累積和を使って区間の和を計算する」
整数 n, x, y と長さ n の配列 a が与えられるので、この配列の x 番目から y 番目までの要素の和を累積和を使って出力してください。
ただし、数列の最初の要素を 1 番目とします。
入力を受け取るコードがすでに用意されているので、コードを書き足してプログラムを完成させてください。
期待する出力値
9
演習課題「累積和を求める(inclusive scan)」
整数 n と長さ n の配列 a が与えられるので、この配列の累積和を半角スペース区切りで出力してください。
ただし、今回考える累積和は、先頭 0 個の和を考慮しないものとします。これについて詳しくは Tips を参考にしてください。
入力を受け取るコードと出力用の関数 printArray がすでに用意されているので、コードを書き足してプログラムを完成させてください。
期待する出力値
1 3 6 10 15
#02:区間の和
累積和を用いて配列の区間の和を求めてみます。
先頭 0 個の和を考慮しない累積和の計算を行う場合は s[0] = a[0] としたのち、i を 1 から n-1 まで繰り返して s[i] = s[i-1] + a[i] とすることで求めることができます。配列 s のサイズは n になることに注意しましょう。
また、元の配列でそのまま計算することもでき、その場合も同じく i を 1 から n-1 まで繰り返して a[i] += a[i-1] とすることで求めることができます。