酷代码 AI
菜单

烛龙战队发现了 n n 处能量点 a [ i ] a[i],需要将这些能量点按从小到大的顺序排序后,如果排序后的 a [ i ] a[i] 是 i i 的倍数,那么这个点就是闪点。 输入格式 共两行, 第一行一个正整数 n n,表示能量点的数量。 第二行 n n 个正整数 a [ i ] a[i],依次为待排序的每个能量点的能量值,数与数之间间隔一个空格。 输出格式 一个整数,表示闪点数量。c++

```cpp #include <iostream> #include <algorithm> using namespace std; const int MAXN = 100005; int a[MAXN]; int main() { int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; } // 对能量点进行排序 sort(a + 1, a + n + 1); int flashPoints = 0; // 检查排序后的每个点是否为闪点 for (int i = 1; i <= n; ++i) { if (a[i] % i == 0) { flashPoints++; } } cout << flashPoints << endl; return 0; } ``` 代码解释 1. 输入处理:读取能量点的数量 `n`,并将每个能量点的值存储在数组 `a` 中。 2. 排序:使用 `sort` 函数对数组 `a` 进行排序,排序范围是从 `a[1]` 到 `a[n]`。 3. 闪点判断:遍历排序后的数组,检查每个元素 `a[i]` 是否是 `i` 的倍数。如果是,则 `flashPoints` 计数器加 1。 4. 输出结果:输出闪点的数量。 复杂度分析 - 时间复杂度:排序操作的时间复杂度为 $O(n log n)$,遍历数组的时间复杂度为 $O(n)$,因此总的时间复杂度为 $O(n log n)$。 - 空间复杂度:主要使用了一个长度为 `n` 的数组来存储能量点,因此空间复杂度为 $O(n)$。 [2026-01-24 16:51:33 | AI问答 | 401点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多