1255. 魔法小程序

1255. 魔法小程序

题目描述

定义数组 a[], b[], c[]
定义函数 魔法(x, y, z):
{
    如果 a 的长度 == z:
        返回 x >= y
    如果 x % a[z] < y % a[z]:
        返回 假
    返回 魔法(x / a[z], y / a[z], z + 1)
}
定义函数 主程序():
{
    读入 a[], b[]
    令 c[] 的长度与 b[] 的长度相同,且 c[] 的每个元素均为 0
    令 变量 i 从 0 循环至 b 的长度 - 1:
        令 变量 j 从 0 循环至 i:
            如果 魔法(i, j, 0):
                c[i] += b[j]
    输出 a[], c[]
}

这个程序目前十分低效(显然时间复杂度至少是平方量级的),
无法快速完成百万级别的计算,但我们现在的任务不仅是优化它。

现在我们给出这段程序的输出,你需要完成一个“非确定机”的工作,给出一个可能的输入。

请注意本题的空间限制。

输入

第一行,输入 aa 的长度。
第二行,输入一些空格隔开的正整数,依次表示 aa 的每一项。
第三行,输入 cc 的长度。第四行输入一些空格隔开的整数,依次表示 cc 的每一项。
每一行,相邻的两个数,恰好用一个空格隔开。
aa 的长度不会超过 10410^4aa 的每一个元素不会超过 10910^9
cc 的长度不会超过 10610^6
cc 的元素的范围没有直接的保证,
但是保证存在一个解 bb,使得 bb 的每一个元素的绝对值都不超过 10910^9
aacc 都至少拥有一个元素。

输出

第一行,输出 aa 的长度。
第二行,输入一些空格隔开的正整数,依次表示 aa 的每一项。
第三行,输出 bb 的长度。
第四行,输入一些空格隔开的整数,依次表示 bb 的每一项。
每一行相邻的两个数,恰好用一个空格隔开。
你必须保证你输出的 bb 的每一个元素的绝对值都不超过 10910^9
保证存在一个可行的解满足这个条件。
如果有多个可行的解,你可以输出任意一个。

样例一

输入

3
2  3  3
10
1  0  2  9  3  8  4  7  5  6

输出

3
2  3  3
10
1  -1  1  8  1  -2  3  4  0  -10

数据范围限制

本题分为若干个子任务,但是不采用捆绑测试。
每个子任务中有若干个测试点,
只要你对于某个测试点的输出正确,
即可获得该测试点的分数。
某个子任务的分数是指其各个测试点的分数之和。

我们设 nncc 的长度,设 mmaa 的长度,则:

子任务1(4分) n=1n=1m100m \leq 100

子任务2(22分)n100n \leq 100m100m \leq 100

子任务3(6分)n1000n \leq 1000m1000m \leq 1000

子任务4(8分)n104n \leq 10^4

子任务5(21分)n=2mn=2^maa 中所有元素均为2。

子任务6(9分)aa 中所有元素均为2。

子任务7(7分)m=1m=1

子任务8(12分)m20m \leq 20

子任务9(11分)没有特殊的约定。

来源

清华集训2016

信息

ID
1255
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者