#agc047e. [agc047_e]Product Simulation
[agc047_e]Product Simulation
题目描述
这是一个仅输出的问题。你不需要从输入中读取任何内容。
简而言之,你的任务是通过仅使用比较操作 和加法操作 来模拟乘法。在这个问题中没有输入,你只需要打印操作序列。
假设有一个长度为 的大数组 a\[0\], a\[1\], ..., a\[N-1\]。最开始的两个值是两个非负整数 和 (你并不知道它们是什么),其它元素都是零。你的目标是在最后将乘积 放在 a\[2\] 中。
你可以执行以下两种类型的操作,格式如下(其中 ):
+ i j k
— 应用操作 a\[k\] = a\[i\] + a\[j\]。< i j k
— 应用操作 a\[k\] = a\[i\] < a\[j\]。也就是说,如果 a\[i\] < a\[j\],那么 a\[k\] 变为 ,否则变为 。
你最多可以使用 次操作。 数组的元素不能超过 。指标 不一定要不同。可以修改数组的任意元素(包括前两个元素)。实际的检查器会在单个测试中对多个 值进行模拟。每次,检查器会选择值 和 ,创建数组 a = \[A, B, 0, 0, \\ldots, 0\],应用所有你的操作,并确保 a\[2\] = A \\cdot B。
约束条件
- $V = 10^{19} = 10\\,000\\,000\\,000\\,000\\,000\\,000$
分数说明
- 通过满足 的测试将获得 分。
- 全部通过将获得另外 分。
输入
标准输入为空。
输出
第一行打印操作的数量。然后每个操作以 + i j k
或 < i j k
的单行格式打印。
示例输入 1
示例输出 1
4
< 0 1 8
+ 0 1 2
+ 2 8 2
+ 0 0 0```
在第一个示例测试中,检查器仅针对一对 $(A, B) = (2, 3)$ 检查你的序列。所给的输出对这个测试是正确的:
* 最开始,$a\[0\] = 2$,$a\[1\] = 3$,$a\[2\] = a\[3\] = \\ldots = a\[N-1\] = 0$。
* `< 0 1 8` 执行 $a\[8\] = 1$,因为 $a\[0\] < a\[1\]$。
* `+ 0 1 2` 执行 $a\[2\] = a\[0\] + a\[1\] = 5$。
* `+ 2 8 2` 执行 $a\[2\] = a\[2\] + a\[8\] = 6$。
* `+ 0 0 0` 执行 $a\[0\] = a\[0\] + a\[0\] = 4$。
* 最后,我们得到了 $a\[2\] = 6 = A \\cdot B$。