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[]
}
这个程序目前十分低效(显然时间复杂度至少是平方量级的),
无法快速完成百万级别的计算,但我们现在的任务不仅是优化它。
现在我们给出这段程序的输出,你需要完成一个“非确定机”的工作,给出一个可能的输入。
请注意本题的空间限制。
输入
第一行,输入 \(a\) 的长度。
第二行,输入一些空格隔开的正整数,依次表示 \(a\) 的每一项。
第三行,输入 \(c\) 的长度。第四行输入一些空格隔开的整数,依次表示 \(c\) 的每一项。
每一行,相邻的两个数,恰好用一个空格隔开。
\(a\) 的长度不会超过 \(10^4\)。 \(a\) 的每一个元素不会超过 \(10^9\)。
\(c\) 的长度不会超过 \(10^6\)。
对 \(c\) 的元素的范围没有直接的保证,
但是保证存在一个解 \(b\),使得 \(b\) 的每一个元素的绝对值都不超过 \(10^9\)。
\(a\) 和 \(c\) 都至少拥有一个元素。
输出
第一行,输出 \(a\) 的长度。
第二行,输入一些空格隔开的正整数,依次表示 \(a\) 的每一项。
第三行,输出 \(b\) 的长度。
第四行,输入一些空格隔开的整数,依次表示 \(b\) 的每一项。
每一行相邻的两个数,恰好用一个空格隔开。
你必须保证你输出的 \(b\) 的每一个元素的绝对值都不超过 \(10^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
数据范围限制
本题分为若干个子任务,但是不采用捆绑测试。
每个子任务中有若干个测试点,
只要你对于某个测试点的输出正确,
即可获得该测试点的分数。
某个子任务的分数是指其各个测试点的分数之和。
我们设 \(n\) 为 \(c\) 的长度,设 \(m\) 为 \(a\) 的长度,则:
子任务1(4分) \(n=1\),\(m \leq 100\)。
子任务2(22分)\(n \leq 100\),\(m \leq 100\)。
子任务3(6分)\(n \leq 1000\),\(m \leq 1000\)。
子任务4(8分)\(n \leq 10^4\)。
子任务5(21分)\(n=2^m\),\(a\) 中所有元素均为2。
子任务6(9分)\(a\) 中所有元素均为2。
子任务7(7分)\(m=1\)。
子任务8(12分)\(m \leq 20\)。
子任务9(11分)没有特殊的约定。
来源
清华集训2016
信息
- ID
- 1255
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者