QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 512 MB Points totaux : 100

#1341. 路线计算器回归

Statistiques

你有一个 $H$ 行 $W$ 列的网格。每个单元格包含以下 11 种字符之一:加法运算符 '+'、乘法运算符 '*' 或 1 到 9 之间的数字。

从左上角单元格到右下角单元格,可以通过向右或向下移动 $H + W - 2$ 次到达。我们将一条路径的值定义为通过按顺序连接路径上所有单元格中的字符所得到的数学表达式的计算结果。你的任务是计算所有可能路径的值之和。由于总和可能很大,请输出其对 $M$ 取模的结果。

题目保证左上角和右下角的单元格包含数字。此外,如果两个单元格共享一条边,则其中至少有一个包含数字。换句话说,从路径中获得的每个表达式在数学上都是有效的。

输入格式

第一行包含三个整数 $H$、$W$ 和 $M$ ($1 \le H, W \le 2000, 2 \le M \le 10^9$)。接下来的 $H$ 行表示网格中的字符。$a_{i,j}$ 表示第 $i$ 行第 $j$ 列单元格中的字符。每个 $a_{i,j}$ 都是 '+'、'*' 或 1 到 9 之间的数字。$a_{1,1}$ 和 $a_{H,W}$ 均为数字。如果两个单元格共享一条边,则其中至少有一个包含数字。

输出格式

输出所有可能路径的值之和,对 $M$ 取模。

样例

输入 1

2 3 1000
3*1
+27

输出 1

162

输入 2

4 4 3000000
24+7
*23*
9+48
*123

输出 2

2159570

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.