こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
累積和の計算 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
以下のように実装しました。
package main
import "fmt"
func main(){
var n, m int
fmt.Scan(&n)
s := make([]int, n)
for i := 0; i < n; i++ {
var a int
fmt.Scan(&a)
if i > 0 {
s[i] = s[i - 1] + a
} else {
s[i] = a
}
}
fmt.Scan(&m)
for i := 0; i < m; i++ {
var l, r int
fmt.Scan(&l, &r)
if l > 1 {
fmt.Println(s[r] - s[l - 1])
} else {
fmt.Println(s[r])
}
}
}
ですが、これだとテストがすべて動作しませんでした。
解説コードを見て修正します。
package main
import "fmt"
func main(){
var n, m int
fmt.Scan(&n)
a := make([]int, n)
s := make([]int, n)
x := 0
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
x += a[i]
s[i] = x
}
fmt.Scan(&m)
for i := 0; i < m; i++ {
var l, r int
fmt.Scan(&l, &r)
fmt.Println(s[r] - s[l] + a[l])
}
}
これで動くようになりました👍