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 翻译