AT_ttpc2019_l 多項式の零点の個数
题目描述
现给定一个表示多项式 $ f(x) $ 的字符串 $ S $。其中,$ S $ 的形式由下述 BNF 规则定义:
> <expr> ::= <term> | <expr> "+" <term> | <expr> "-" <term>
> <term> ::= <factor> | <term> "*" <factor>
> <factor> ::= <value> | <value> "^" <number>
> <value> ::= <number> | "x" | "(" <expr> ")"
> <number> ::= 大于等于 $1$ 且小于 $10^9$ 的整数(不含前导零)
其中,各符号表示如下:
- `x`: 变量 $ x $
- `+`: 加法运算
- `-`: 减法运算
- `*`: 乘法运算(优先级高于加法和减法)
- `^`: 幂运算(优先级高于加法、减法和乘法)
例如,以下字符串是符合上述规则的表达式:
- `x^2+3*x^1+5`
- 表示多项式 $ f(x) = x^2 + 3 \times x^1 + 5 $
- `1+2-3+4*5`
- 表示多项式 $ f(x) = 1 + 2 - 3 + 4 \times 5 $
- `((x^123+1)^456)^789`
- 表示多项式 $ f(x) = \left( \left(x^{123} + 1\right)^{456} \right)^{789} $
- `((x))`
- 表示多项式 $ f(x) = \left(\left(x\right)\right) $
- `1^1*1`
- 表示多项式 $ f(x) = 1^1 \times 1 $
以下字符串则不符合上述表达式规则:
- `2x`
- `0^0`
- `2^x`
- `-1`
- `2^(1+2)`
- `1000000000`
- `007`
请计算:在 $\bmod{10^K}$ 意义下,多项式 $ f(x) $ 的零点数,即满足 $ f(n) \equiv 0 \pmod{10^K} $ 的非负整数 $ n $ 的个数,其中 $ n $ 的范围为 $ 0 $ 至 $ 10^K - 1 $。
输入格式
从标准输入以以下格式读取:
> $ K $ $ S $
输出格式
输出一个整数,表示满足 $ f(n) \equiv 0 \pmod{10^K} $ 的 $ 0 $ 至 $ 10^K - 1 $ 的整数 $ n $ 的个数。
说明/提示
- 所有输入均为整数
- $ 1 \leq K \leq 9 $
- $ 1 \leq |S| \leq 100 $
### 示例解释 1
输入的多项式为 $ f(x) = x^2 - x $。符合条件的 $ n $ 有 $0, 1, 25, 76$:
- $ f(0) = 0 $
- $ f(1) = 0 $
- $ f(25) = 600 \equiv 0 \pmod{100} $
- $ f(76) = 5700 \equiv 0 \pmod{100} $
### 示例解释 2
输入的多项式为 $ f(x) = \left(\left(\left(x\right)\right)^{234567890} \times 1^1 \times 1 + \left(x^2\right)^2\right) $。
### 示例解释 3
输入的多项式为 $ f(x) = 50 + \left(2019 - x + \left(x^3 - x\right)^{2019}\right) \times x^1 $。
**本翻译由 AI 自动生成**