AT_agc047_e.[AGC047E] Product Simulation

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

题目名称:乘法模拟

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

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

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

你可以执行两种形式的操作(这里,0≤i,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] 是否等于 A⋅BA \cdot B。

输入格式

标准输入没有内容。

输出格式

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

输入输出样例

  • 输入#1

    输出#1

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

说明/提示

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

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

部分分:

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

样例一解释

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

  • 一开始,a[0]=2a[0] = 2,a[1]=3a[1] = 3,a[2]=a[3]=…=a[N−1]=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=A⋅Ba[2] = 6 = A \cdot B,达成要求。

输入解题思路,AI测评打分。不知道怎么写?

首页