#include #include #include <unordered_set> #include

using namespace std;

int main() { int N; cin >> N;

vector<int> A(N);
for (int i = 0; i < N; i++) {
    cin >> A[i];
}

// 将序列排序
sort(A.begin(), A.end());

// 统计序列中不同的数的个数
unordered_set<int> uniqueNums;
for (int i = 0; i < N; i++) {
    uniqueNums.insert(A[i]);
}

// 遍历所有可能的 M 值,找到使得不同的数个数最少的 M 值
int minUniqueNums = N;
int bestM = 0;
for (int M = 1; M <= A[N-1]; M++) {
    unordered_set<int> modNums;
    for (int i = 0; i < N; i++) {
        modNums.insert(A[i] % M);
    }
    int uniqueCount = modNums.size();
    if (uniqueCount < minUniqueNums) {
        minUniqueNums = uniqueCount;
        bestM = M;
    }
}

cout << minUniqueNums << endl;

return 0;

}

C++ 优化序列差异:模运算最小化不同元素数量

原文地址: https://www.cveoy.top/t/topic/onOP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录