#ATagc047e. [AGC047E] Product Simulation

[AGC047E] Product Simulation

题目描述

题目名称:乘法模拟

这是一个只输出的题目,输入不会被给出。

简单来说,这是一个要求用比较 (x<y)(x < y) 和加法 (x+y)(x + y) 来模拟整数乘法的问题。没有输入,只需要输出操作序列。

假设有一个长度为 NN 的长数组 a[0],a[1],,a[N1]a[0], a[1], \ldots, a[N-1]。前两个元素的初始值为非负整数 A,BA, B(你并不知道它们的值),其余元素的初始值为 00。你的目标是最终让 a[2]a[2] 等于乘积 ABA \cdot B

你可以执行两种形式的操作(这里,0i,j,k<N0 \leq i, j, k < N):

  • + i j k: 令 a[k]=a[i]+a[j]a[k] = a[i] + a[j]
  • < i j k: 令 a[k]=a[i]<a[j]a[k] = a[i] < a[j]。也就是说,如果 a[i]<a[j]a[i] < a[j],则 a[k]a[k] 将为 11,否则 a[k]a[k] 将为 00

操作的次数最多为 QQ 次,并且在操作过程中,数组 aa 的元素不能超过 VV。不过,指定的索引 (i,j,k)(i, j, k) 可以重复使用,而且可以重写数组中的任何元素(包括前两个元素)。值得注意的是,问题的判定机制会在单个测试案例中对多个 (A,B)(A, B) 的组合执行操作序列。每次,判定机制会选择 A,BA, B 的值生成数组 a=[A,B,0,0,,0]a = [A, B, 0, 0, \ldots, 0],并应用提交的操作序列来验证最终的 a[2]a[2] 是否等于 ABA \cdot B

输入格式

标准输入没有内容。

输出格式

在第 11 行输出操作次数。接下来,每行输出一个操作,可以是 + i j k< i j k 的形式。

样例 1

输入


输出

4
< 0 1 8
+ 0 1 2
+ 2 8 2
+ 0 0 0

说明/提示

对于所有测试数据,满足:

  • 0A,B1090\leq A,B\leq {10}^9
  • N=Q=2×105N=Q=2\times{10}^5
  • V=1019V={10}^{19}

部分分:

  • 如果你的程序能通过 A,B10A,B\leq 10 的测试数据,你将得到 800800 分。
  • 其余的 10001000 分只有通过所有测试数据才能获得。

样例一解释

输入案例 11 中,判定机制仅对 (A,B)=(2,3)(A, B) = (2, 3) 的组合验证了提交的操作序列。上述输出通过了该测试案例,过程如下:

  • 一开始,a[0]=2a[0] = 2a[1]=3a[1] = 3a[2]=a[3]==a[N1]=0a[2] = a[3] = \ldots = a[N-1] = 0
  • 操作 < 0 1 8 后,a[0]<a[1]a[0] < a[1] 成立,因此 a[8]=1a[8] = 1
  • 操作 + 0 1 2 后,a[2]=a[0]+a[1]=5a[2] = a[0] + a[1] = 5
  • 操作 + 2 8 2 后,a[2]=a[2]+a[8]=6a[2] = a[2] + a[8] = 6
  • 操作 + 0 0 0 后,a[0]=a[0]+a[0]=4a[0] = a[0] + a[0] = 4
  • 最终,a[2]=6=ABa[2] = 6 = A \cdot B,达成要求。