官方题解|可分数列
2024-09-09 13:13:11
发布于:浙江
50阅读
0回复
0点赞
题目解析
对于本道题目,不难发现,公差以及首项的值是不重要的,我们需要关注的点主要是如何将这 个元素去掉 个元素以后按照题目要求的形式分成 组。
首先观察样例。
我们将按照『从上到下』,『从左到右』的顺序,除最后一列外,每列 个元素的方式排列。
将 和 去除掉后,可以将剩余的元素分成 ,, 三组。
我们推广到更一般的情况。
可以看到,只需要将 和 删除,便可以将剩余的 个元素按照题目要求进行分组,每组的公差为 。
AC代码
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
i64 n, x, d;
std::cin >> n >> x >> d;
if (n == 1) {
std::cout << -1 << '\n';
return 0;
}
std::cout << 2 << ' ' << n * 4 + 1 << '\n';
for (int i = 0; i < n; ++i) {
i64 v = x + i * d;
if (i == 1) v += n * d;
for (int j = 0; j < 4; ++j)
std::cout << v + j * n * d << " \n"[j + 1 == 4];
}
return 0;
}
这里空空如也
有帮助,赞一个