Skip to content

Latest commit

 

History

History
105 lines (77 loc) · 3.73 KB

statement.md

File metadata and controls

105 lines (77 loc) · 3.73 KB

とかげ算

Problem Statement

トカゲは変温動物である。暖かい年にはその個体数を増やすが、寒い年には逆に減っていく。

サカモト博士が発見したサカモトカゲ(学名: Plestiodon sakamotus)は、暖かい年には個体数を3増やし、寒い年には個体数を半分(小数点以下切り捨て)にすることが広く知られている(当然ではあるが、0匹になって絶滅してしまえばそれ以降の繁殖は行われない)。

サカモトカゲは上記の性質から、過去の気候状況がわかれば容易に個体数を計算することができる。与えられた過去の気候状況から、サカモトカゲの個体数をシミュレーションせよ。

Input

入力は以下の形式で表される。

D
N1 T1
N2 T2
:
ND TD

ここでDは気候状況のデータの数、Niはi番目のデータにおいて最初に生息しているサカモトカゲの数である。Tiはi番目のデータにおいて過去の気候状況を表す文字からなる文字列である。Ti の各文字は、その年が暖かい年ならば'w'、寒い年ならば'c'である。

Constraints

入力は以下の条件をすべて満たす。

  • 1 <= D <= 100
  • 1 <= i <= D を満たすすべての整数iについて、
    • 1 <= Ni <= 100
    • Tiの文字数をLiとするとき、1 <= Li <= 100
    • Tの中に現れる文字はすべて{'w', 'c'}のいずれか

Output

出力は、各気候データについて現在のサカモトカゲの匹数を1行で出力せよ。

Sample Input

3
3 wwc
1 cwcwwwwww
20 wwwwwwwwwwcwwwwwwwwwwc

Sample Output

4
0
27
  • 1つめのデータでは、1年目で6匹に増え、2年目で9匹に増え、3年目で4匹に減る。
  • 2つめのデータでは、1年目で0匹になるため、それ以降は繁殖しない。

Note

文字列の取り扱いについて

文字列は、使用する言語ごとに取り扱い方に注意する必要がある。 以下では、CとJavaにおいて特に注意すべき点を挙げておく。

C

  • Cには"文字列"という概念を表すデータ構造はなく、"文字の配列(char[])"として取り扱わなければならない。
    • 各文字を取り出すには配列と同じように記述すればよい。
  • Cの文字列は、最後に"\0"という文字が入るため、配列のサイズは実際の文字数より1つ多く取らなければならない。
  • Cで文字列同士が等しいかどうかを判定するには strcmp関数 を用いる。
    • string.hをincludeする必要がある
#include <string.h> /* strcmp関数を利用するために必要なヘッダファイル */

char[] str = "str";
str = {'s', 't', 'r', '\0'};
/* 上下どちらも同じ処理 */

char c = str[1]; /* cには't'が入る */

if (strcmp(str1, str2) == 0) {
    /* str1とstr2が等しい場合の処理 */
} else {
    /* str1とstr2が等しくない場合の処理 */
}

Java

  • Javaでは、文字列はStringクラスのインスタンス(≒String型の変数)として表される。
    • "String"のSは 大文字 である。
  • Javaの文字列から各文字を1文字だけ取り出すには charAtメソッド を用いる。
  • Javaで文字列同士が等しいかどうかを判定するには equalsメソッド を用いる。
String str = "str";
char c = str.charAt(1); // cには't'が入る

if (str1.equals(str2)) {
    // str1とstr2が等しい場合の処理
} else {
    // str1とstr2が等しくない場合の処理
}