构造,ABC251D - At Most 3 (Contestant ver.)
目录
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
二、解题报告
1、思路分析
2、复杂度
3、代码详解
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
https://atcoder.jp/contests/abc251/tasks/abc251_d
二、解题报告
1、思路分析
拿出 [1, 100] 我们可以构造出[1, 100] 之内的任何数
对于 [100, 10000],因为已经可以构造出[1, 100],所以我们把区间整体除以100,问题转换成了表示出 [1, 100],这说明我们拿出 [1, 100] * 100 = [100, 10000] 即可
[10000, 1000000] 类似
这种构造思路很常见,积累一下
2、复杂度
时间复杂度: O(300)空间复杂度:O(1)
3、代码详解
#include <bits/stdc++.h> namespace ranges = std::ranges; namespace views = std::views; using i64 = long long; using u32 = unsigned; using u64 = unsigned long long; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int W; std::cin >> W; std::cout << 300 << '\n'; for (int i = 1; i <= 100; ++i) { std::cout << i << ' ' << i * 100 << ' ' << i * 10000 << ' '; } return 0; }