AT_agc047_e.[AGC047E] Product Simulation
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
题目名称:乘法模拟
这是一个只输出的题目,输入不会被给出。
简单来说,这是一个要求用比较 (x<y) 和加法 (x+y) 来模拟整数乘法的问题。没有输入,只需要输出操作序列。
假设有一个长度为 N 的长数组 a[0],a[1],…,a[N−1]。前两个元素的初始值为非负整数 A,B(你并不知道它们的值),其余元素的初始值为 0。你的目标是最终让 a[2] 等于乘积 A⋅B。
你可以执行两种形式的操作(这里,0≤i,j,k<N):
+ i j k: 令 a[k]=a[i]+a[j]。< i j k: 令 a[k]=a[i]<a[j]。也就是说,如果 a[i]<a[j],则 a[k] 将为 1,否则 a[k] 将为 0。
操作的次数最多为 Q 次,并且在操作过程中,数组 a 的元素不能超过 V。不过,指定的索引 (i,j,k) 可以重复使用,而且可以重写数组中的任何元素(包括前两个元素)。值得注意的是,问题的判定机制会在单个测试案例中对多个 (A,B) 的组合执行操作序列。每次,判定机制会选择 A,B 的值生成数组 a=[A,B,0,0,…,0],并应用提交的操作序列来验证最终的 a[2] 是否等于 A⋅B。
输入格式
标准输入没有内容。
输出格式
在第 1 行输出操作次数。接下来,每行输出一个操作,可以是 + i j k 或 < i j k 的形式。
输入输出样例
输入#1
输出#1
4 < 0 1 8 + 0 1 2 + 2 8 2 + 0 0 0
说明/提示
对于所有测试数据,满足:
- 0≤A,B≤109
- N=Q=2×105
- V=1019
部分分:
- 如果你的程序能通过 A,B≤10 的测试数据,你将得到 800 分。
- 其余的 1000 分只有通过所有测试数据才能获得。
样例一解释
输入案例 1 中,判定机制仅对 (A,B)=(2,3) 的组合验证了提交的操作序列。上述输出通过了该测试案例,过程如下:
- 一开始,a[0]=2,a[1]=3,a[2]=a[3]=…=a[N−1]=0。
- 操作
< 0 1 8后,a[0]<a[1] 成立,因此 a[8]=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⋅B,达成要求。
输入解题思路,AI测评打分。不知道怎么写?