1 条题解
-
0
📝 题目大意
给定正整数 和一个严格递增的数列 ,筛选出 中所有能被 整除的元素,将每个元素除以 后按原顺序输出。
💡 解题思路
- 题目分析:,数据范围极小。数列 本身已按升序给出,因此筛选后自然保持升序,无需额外排序。题目保证至少存在一个 的倍数,不会出现空输出。
- 算法推导:
- 读入 和数组 (
std::vector<int> A(N))。 - 遍历数组 中的每个元素 :
- 若 ,则输出 。
- 用布尔变量
first控制空格分隔:第一个输出前不加空格,之后每个输出前加一个空格。
- 读入 和数组 (
- 边界与细节:
- 当 时,所有元素都是 的倍数,全部输出(如样例 2)。
- 输入保证严格递增,遍历顺序即输出顺序,无需排序。
- 注意输出末尾换行(
cout << endl)。
⏱️ 复杂度分析
- 时间复杂度:,只需一次遍历。
- 空间复杂度:,存储输入数组。
💻 标准代码 (C++)
#include <iostream> #include <vector> using namespace std; int main() { int N, K; cin >> N >> K; vector<int> A(N); for (int i = 0; i < N; i++) { cin >> A[i]; } bool first = true; // 控制空格输出,避免行首多余空格 for (int x : A) { if (x % K == 0) { // 判断是否为 K 的倍数 if (!first) cout << " "; // 非首个元素前加空格 cout << x / K; // 输出除以 K 的结果 first = false; } } cout << endl; // 输出换行 return 0; }
- 1
信息
- ID
- 784
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者