QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 128 MB 満点: 100

#11573. 表达式求值

統計

考虑一个表达式 $E$,其中包含 $0$ 到 $9$ 的整数常量,从 $a$ 到 $z$ 的变量,以及以下运算:加法、乘法和常数指数的幂运算。令人惊讶的是,每个变量 $a, b, \dots, z$ 在表达式 $E$ 中最多出现一次。对于给定的素数 $p$,我们想知道该表达式所表示的多项式在模 $p$ 意义下有多少个根。换句话说,我们想要计算有多少种方式可以将 $0$ 到 $p-1$ 之间的整数赋值给 $E$ 中的变量,使得 $E$ 的值能被 $p$ 整除。由于这样的根的数量可能很大,只需输出其模 $30011$ 的结果。

例如,由以下表达式表示的多项式: $$E = ((a + y) \cdot (z + 8))^2$$ 在模 $p = 3$ 下有 $15$ 个根,其中包括: $$(a = 0, y = 0, z = 0), \quad (a = 1, y = 2, z = 0), \quad (a = 2, y = 0, z = 1)$$ 等。

更正式地,表达式定义如下: 每个整数常量 $0, 1, \dots, 9$ 都是一个表达式。 每个变量 $a, b, \dots, z$ 都是一个表达式。 如果 $A$ 和 $B$ 是任意表达式,则 $(A+B)$ 和 $(AB)$ 也是表达式:前者是表达式 $A$ 和 $B$ 的和,后者是它们的积。 * 如果 $A$ 是任意表达式,且 $B$ 是 $2, 3, \dots, 9$ 中的整数常量,则 $(A^B)$ 也是表达式:即表达式 $A$ 的 $B$ 次幂。

输入格式

第一行包含一个素数 $p$ ($2 \le p < 15000$)。第二行包含如上所述的表达式 $E$,由最多 $300$ 个字符 $0, 1, \dots, 9, a, b, \dots, z, +, *, \text{\textasciicircum}, (, )$ 组成的序列表示,中间没有空格。

输出格式

令 $k$ 表示多项式 $E$ 在模 $p$ 意义下的根的数量。你的程序应输出一个非负整数,$k \pmod{30011}$。

样例

输入 1

3
(((a+y)*(z+8))^2)

输出 1

15

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.