QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#15403. 幼稚園の宿題

Statistics

Kenny は子供たちに算数を教えている幼稚園の先生である。学習を助けるため、楽しくて煩わしくない形式の「数字探し」の宿題を出したい。

数字探しのパズルは単語探しに似ているが、単語の代わりに数式を探す。パズルは二つの部分からなる。$n$ 行 $m$ 列のグリッドと、探すべき $q$ 個の目標の数のリスト $a_1,a_2,\ldots,a_q$ である。各マスには 1 から 9 までの数字、加算記号 +、または乗算記号 * が入る。

同じ行、列、または対角線に沿って、いずれの向きでも一直線に一つ以上の連続した文字をつなぐと式を作れる。各式は開始マスと終了マスで定義できる。開始または終了マスが異なれば、まったく同じ文字を含んでいても異なる式とみなす。

有効な式は次の形式でなければならない。

$$num\quad op\quad num\quad op\quad\cdots\quad op\quad num$$

各 $num$ は一つ以上の数字の列で、各 $op$ は + または * である。例えば 123 と 1+2*3+45 は有効な式だが、+123 と 2**5 はそうではない。式の値は、通常の算術規則に従って計算した結果である。

パズルの目標は各数 $a_i$ について、グリッド内の異なる有効な式のうち値が $a_i$ になるものの数を数えることである。

規則を説明するため、次の完成済みの数字探しパズルを考える。

problem_15403_d2cffd9eaeb16ed0f4a3fd5064160afa.png

第 $r$ 行、第 $c$ 列のマスを $(r,c)$ と表す。

  1. $67$ の答えは $2$ である。$(1,4)$ から始まる式 67 が二つあるからである。同じ文字を含むが終了位置が異なるため、異なる式とみなす。
  2. $420$ の答えは $0$ である。値が $420$ になる式がグリッドにないからである。
  3. $3$ の答えは $4$ である。

    • 式 3 は $(1,7)$ と $(9,5)$ の二か所に現れる。
    • 式 1+2 は $(6,2)$ から $(8,2)$ に現れる。
    • 式 2+1 は $(8,2)$ から $(6,2)$ に現れる。同じマスの集合を共有するが、開始位置が異なるため異なる式とみなす。
  4. $727$ の答えは $3$ である。

    • 式 7+16*45 は $(2,1)$ から $(8,7)$ に現れる。乗算は加算より先に行うことに注意せよ。
    • 式 727 は $(3,5)$ から $(3,7)$、および $(3,7)$ から $(3,5)$ に現れる。同じマスの集合を共有し同じ文字を含むが、開始位置が異なるため異なる式とみなす。

Kenny は子供たちが面白い数字探しパズルを楽しんで解くのを見るのが待ちきれない。しかしパズルを出す前に、答えを用意しなければならない。準備した各パズルの答えを計算するのを手伝ってほしい。

入力

最初の行には、行数、列数、目標の数の個数をそれぞれ表す三つの整数 $n,m,q$ が含まれる。

続く $n$ 行にはそれぞれ、グリッドを表す $m$ 文字の文字列が含まれる。

その後の $q$ 行のうち第 $i$ 行は、第 $i$ 番目の目標の数を表す整数 $a_i$ を含む。

  • $1 \le n,m \le 1000$
  • $1 \le n \times m \le 3 \times 10^4$
  • $1 \le q \le 10^5$
  • グリッドには 123456789+* に含まれる文字だけが現れる。
  • $1 \le a_i \le 10^6$
  • すべての $a_i$ は互いに異なる。

出力

$q$ 行出力せよ。第 $i$ 行は、$a_i$ の答えを表す一つの整数を含む。

入出力例

入力 1

9 8 4
4216793+
717*4*54
7+5+727*
45149+71
8+26697*
+189*2+9
5+*244+7
42595952
97+*315+
67
420
3
727

出力 1

2
0
4
3

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.