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

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

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

問題

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

文字列 str を "bwwbwbbwbwbb" とします。

文字列 str の 3 文字目から 8 文字目までの 'b' の個数を累積和を用いて求めてください。



(ヒント)


文字列 str の i 文字目を str_i (1 ≦ i ≦ 10) とします。



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




1 ≦ i ≦ 10 において
str_i が 'b' ならば b_(i-1) = 1
str_i が 'b' でないならば b_(i-1) = 0


例えば str = "bwbwwbwbwb" ならば b = {1, 0, 1, 0, 0, 1, 0, 1, 0, 1} となります。



ここで、数列 b の 1 の個数は、文字列 str の 'b' の個数と同じだとわかります。

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

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



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

入力される値

・入力はありません。


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

文字列 str の 3 文字目から 8 文字目までの 'b' の個数を出力してください。


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

条件

・入力はありません。

問題一覧へ戻る

ページの先頭へ戻る