1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 累積和メニュー(言語選択)
  4. 問題一覧 C++編
  5. 区間内の個数 1

累積和メニューのサムネイル
区間内の個数 1 (paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

10 個の整数 a_0, a_1, a_2, ..., a_9 をそれぞれ

1 5 9 7 5 3 2 5 8 4

としたとき、この数列の a_2 から a_7 までの偶数の個数を、累積和を使うことで求め、一行で出力してください。



(ヒント)


まず、数列 a の各要素が偶数かどうかを格納する数列 b_0, b_1, ..., b_9 を以下のように考えてみます。




0 ≦ i ≦ 9 において
a_i が偶数ならば b_i = 1
a_i が奇数ならば b_i = 0


例えば a = {1, 2, 3, 4, 5} ならば b = {0, 1, 0, 1, 0} となります。



ここで、数列 b の 1 の個数は、数列 a の偶数の個数と同じだとわかります。

つまり、数列 b で累積和を用いて、b_2 から b_7 までの総和を求めればよいです。

b の累積和をとった数列を s とすると、b_2 から b_7 までの総和は、s[8] - s[2] で求めることができます。



このヒントを元に、累積和で問題を解いてみましょう

入力される値

・入力はありません。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

与えられた数列の a_2 から a_7 までの偶数の個数を、累積和を使うことで求め、一行で出力してください。

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

・入力はありません。

問題一覧へ戻る

ページの先頭へ戻る