ブラックジャックメニューのサムネイル
カウンティングとベット額 Elixir(Beta)編(paizaランク A 相当)

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

問題

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

(はじめに)
カードカウンティングの目的は、山札の状況に応じてベット額を調整し、有利なときに大きく勝つことです。
今回は、スコアに応じて実際にベット額を変動させるシミュレーションを行いましょう。

ルールは以下の通りです。
・ 1回目のゲームを行う前のカウント(スコア)は 0 です。
・ 使ったカードは捨てていきます(山札には戻りません)。
・ i 回目のゲームのベット額は、そのゲームを始める時のスコアを使って以下の式で決定します。

ベット額 = X + A × スコア

(問題)
基準となる賭け金 X、変動係数 A、ゲーム回数 N が与えられます。
続いて N 回分のゲームの手札情報(プレイヤーの手札、親の手札)が与えられます。
各ゲームで使用されたカードをもとにスコアを更新しながら、それぞれのゲームでのベット額を出力してください。
なお、計算結果のベット額がマイナスになる場合は、0 を出力してください。

なお、カウンティングの計算ルールは前回と同じです。
・ 2, 3, 4, 5, 6: +1点
・ 7, 8, 9: 0点
・ 10, J, Q, K, A: -1点

入力される値

X A N
K_1 p_{1,1} ... p_{1,K_1}
L_1 d_{1,1} ... d_{1,L_1}
...
K_N p_{N,1} ... p_{N,K_N}
L_N d_{N,1} ... d_{N,L_N}

1 行目に、基準額 X、係数 A、回数 N が空白区切りで与えられます。
続く 2×N 行に、各ゲームのカード情報が与えられます。
・ i 回目のプレイヤーの手札枚数 K_i と、そのカード文字列 p_{i,j}
・ i 回目の親の手札枚数 L_i と、そのカード文字列 d_{i,j}


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

各ゲームのベット額を N 行出力してください。
計算結果のベット額がマイナスになる場合は、0 を出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ X ≦ 1000
・1 ≦ A ≦ 100
・1 ≦ N ≦ 6
・カードはジョーカーを除く 52 枚のトランプから配られ、1度使われたカードは再出現しない
・カードの総数は52枚を超えない

入力例1

100 20 2
3 H10 DJ CK
2 SA HQ
2 H2 D3
2 S4 C5

出力例1

100
0

入力例2

50 10 3
2 H2 H3
2 D4 D5
2 H7 H8
2 S9 C7
2 HA HK
2 SQ CJ

出力例2

50
90
90

問題一覧へ戻る

  1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ブラックジャックメニュー(言語選択)
  4. 問題一覧 Elixir(Beta)編
  5. カウンティングとベット額 Elixir(Beta)編
ページの先頭へ戻る