以下是使用C++解决该问题的代码:

#include <iostream>
#include <vector>
#include <unordered_set>

using namespace std;

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

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

    unordered_set<int> uniqueValues;
    for (int i = 0; i < N; i++) {
        uniqueValues.insert(A[i] % N);
    }

    int M = uniqueValues.size();
    cout << M << endl;

    return 0;
}

该代码首先读取输入的序列长度N,并创建一个vector来保存序列A的元素。然后,通过循环读取N个元素,将它们存储在vector中。

接下来,我们使用unordered_set来保存序列A经过mod N运算后的不同的值。我们遍历序列A的每个元素,将它们对N取模后的值插入到unordered_set中。由于unordered_set只会保存不同的元素,因此最后unordered_set中的元素个数就是序列A中不同的数的个数。

最后,我们输出unordered_set的大小作为结果。

注意:该代码中假设输入的序列A中的元素都是非负整数。如果输入的序列A中可能包含负数,那么需要对代码进行适当的修改。

用C++解决以下问题:给定序列 A=A_1A_2A_3A_N你可以选择一个整数 M将每个数都变成 mod M 后的值使序列中不同的数尽量少。例如 A=274选择M=4则序列A 变成 230有3 个不同的数。2=N=210^5

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

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