@[xpg007](/user/1024680)
1.在cala函数中,你使用了一个循环来遍历所有的数字,并计算它们出现次数的最大公约数的倍数。这个循环的复杂度是O(n),而且在每次循环中还有一次对map的查找操作。如果输入的数字很大,这个过程会很慢。
2.在计算每个数的出现次数的最大公约数的倍数的总和时,你使用了另一个循环来遍历所有的数字,然后在每个循环中进行了除法和乘法操作。这个循环的复杂度也是O(n),并且还有除法和乘法操作,可能会使性能下降。
by yjz468 @ 2024-04-25 21:17:20
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
unordered_map<int, int> counts;
vector<int> nums(n);
for (int i = 0; i < n; ++i) {
cin >> nums[i];
counts[nums[i]]++;
}
int maxTotal = 0;
for (const auto& kvp : counts) {
int count = kvp.second;
for (int i = 1; i <= count; ++i) {
int total = 0;
for (const auto& kvp : counts) {
total += min(kvp.second / i, count) * i;
}
maxTotal = max(maxTotal, total);
}
}
for (int i = 1; i <= maxTotal; ++i) {
int total = 0;
for (const auto& kvp : counts) {
total += min(kvp.second / i, kvp.second) * i;
}
cout << total << " ";
}
return 0;
}
```
by yjz468 @ 2024-04-25 21:18:15
@[yjz468](/user/937773)
那我该怎么该?
~~我不是求最大公约数的倍数~~
by xpg007 @ 2024-04-25 21:19:03
@[xpg007](/user/1024680) 额额额
by yjz468 @ 2024-04-25 21:20:59
@[yjz468](/user/937773)
一,质疑你用chat了
二,循环两层都是i
三,依然超时O(n^2)
四,变量都重名了
by xpg007 @ 2024-04-25 21:24:21
@[xpg007](/user/1024680) 明显chatGPT回答
by DFs_YYDS @ 2024-04-25 21:25:59
@[DFs_YYDS](/user/1119406)
你来调一下呗,QwQ
by xpg007 @ 2024-04-25 21:27:58
@[yjz468](/user/937773) 人家真心发问了,你就这样糊弄人家?
by __xsy2013__ @ 2024-04-25 21:29:57
![](https://cdn.luogu.com.cn/upload/usericon/1119406.png)
by yjz468 @ 2024-04-25 21:30:07
@[xpg007](/user/1024680) 对不起,我要备战明日比赛
by __xsy2013__ @ 2024-04-25 21:30:11