AT_arc148_f [ARC148F] 998244353 → 1000000007
题目描述
[problemUrl]: https://atcoder.jp/contests/arc148/tasks/arc148_f
**本题为输出仅题。**
有一种编程语言,支持无符号 64 位整数的加法、乘法以及以 $998244353$ 为除数的取模运算。
请使用该语言编写一个程序,实现 $ \text{mod}\ 1000000007 $ 下的乘法。
更严格地说,给定 $0$ 到 $1000000006$ 之间的整数 $a, b$,请按照以下**规格**和**格式**,编写一个程序,计算 $a \times b \bmod{1000000007}$。
输入格式
标准输入为空。
输出格式
请输出按照题目描述的规格和格式编写的程序。
说明/提示
### 程序的规格
本程序可以操作用英文字母大写表示的 $A, B, \dots, Z$ 共 $26$ 个**变量**。
每个变量可以存储 $0$ 到 $2^{64}-1$ 之间的整数(下文称为**无符号 64 位整数**)。
程序开始执行时,变量 $A$ 被赋值为整数 $a$,变量 $B$ 被赋值为整数 $b$,其余变量均为 $0$。
程序执行结束时,变量 $C$ 必须存储 $a \times b \bmod{1000000007}$ 的值。
### 程序的格式
第 $1$ 行为一个整数 $N$,表示程序的指令数,满足 $1 \leq N \leq 100$。
第 $2$ 行到第 $N+1$ 行,每行一条指令,指令按顺序依次执行。
指令有以下三种形式之一:
- `add x y z`
- 将 $x$ 赋值为 $(y + z) \bmod{2^{64}}$。其中 $x$ 为变量,$y, z$ 可以是变量或无符号 64 位整数。
- `mul x y z`
- 将 $x$ 赋值为 $y \times z \bmod{2^{64}}$。其中 $x$ 为变量,$y, z$ 可以是变量或无符号 64 位整数。
- `rem x y`
- 将 $x$ 赋值为 $y \bmod{998244353}$。其中 $x$ 为变量,$y$ 可以是变量或无符号 64 位整数。
### 判题
如果提交的程序格式不正确,评测结果不确定。
如果提交的程序格式正确,评测器会针对每个测试用例,独立地对 $10^4$ 组整数对 $(a, b)$($0 \leq a, b \leq 1000000006$)运行程序(这些整数对由评测器预先准备,并在每个测试用例中固定)。
若对于所有 $(a, b)$,程序执行结束时变量 $C$ 的值均为 $a \times b \bmod{1000000007}$,则评测结果为 `AC`,否则为 `WA`。
### 样例说明 1
下面给出一个格式正确的程序示例(但该程序不满足题目要求,提交会得到 `WA`)。该程序执行结束后,各变量的值如下:
- $A$ : $a + 10$
- $B$ : $b$
- $C$ : $a \times b \bmod{998244353}$
- $D$ : $b + 2$
- $E$ : $1$
- 其余变量 : $0$
由 ChatGPT 4.1 翻译