#ATarc148f. [ARC148F] 998244353 → 1000000007

[ARC148F] 998244353 → 1000000007

题目描述

本题为输出仅题。

有一种编程语言,支持无符号 64 位整数的加法、乘法以及以 998244353998244353 为除数的取模运算。
请使用该语言编写一个程序,实现 mod 1000000007\text{mod}\ 1000000007 下的乘法。

更严格地说,给定 0010000000061000000006 之间的整数 a,ba, b,请按照以下规格格式,编写一个程序,计算 a×bmod1000000007a \times b \bmod{1000000007}

输入格式

标准输入为空。

输出格式

请输出按照题目描述的规格和格式编写的程序。

样例 1

输入


输出

5
mul C A B
rem C C
add A A 10
add D 2 B
add E 1 0

说明/提示

程序的规格

本程序可以操作用英文字母大写表示的 A,B,,ZA, B, \dots, Z2626变量
每个变量可以存储 0026412^{64}-1 之间的整数(下文称为无符号 64 位整数)。
程序开始执行时,变量 AA 被赋值为整数 aa,变量 BB 被赋值为整数 bb,其余变量均为 00
程序执行结束时,变量 CC 必须存储 a×bmod1000000007a \times b \bmod{1000000007} 的值。

程序的格式

11 行为一个整数 NN,表示程序的指令数,满足 1N1001 \leq N \leq 100
22 行到第 N+1N+1 行,每行一条指令,指令按顺序依次执行。
指令有以下三种形式之一:

  • add x y z
    • xx 赋值为 (y+z)mod264(y + z) \bmod{2^{64}}。其中 xx 为变量,y,zy, z 可以是变量或无符号 64 位整数。
  • mul x y z
    • xx 赋值为 y×zmod264y \times z \bmod{2^{64}}。其中 xx 为变量,y,zy, z 可以是变量或无符号 64 位整数。
  • rem x y
    • xx 赋值为 ymod998244353y \bmod{998244353}。其中 xx 为变量,yy 可以是变量或无符号 64 位整数。

判题

如果提交的程序格式不正确,评测结果不确定。
如果提交的程序格式正确,评测器会针对每个测试用例,独立地对 10410^4 组整数对 (a,b)(a, b)0a,b10000000060 \leq a, b \leq 1000000006)运行程序(这些整数对由评测器预先准备,并在每个测试用例中固定)。
若对于所有 (a,b)(a, b),程序执行结束时变量 CC 的值均为 a×bmod1000000007a \times b \bmod{1000000007},则评测结果为 AC,否则为 WA

样例说明 1

下面给出一个格式正确的程序示例(但该程序不满足题目要求,提交会得到 WA)。该程序执行结束后,各变量的值如下:

  • AA : a+10a + 10
  • BB : bb
  • CC : a×bmod998244353a \times b \bmod{998244353}
  • DD : b+2b + 2
  • EE : 11
  • 其余变量 : 00

由 ChatGPT 4.1 翻译