1078 Hashing(25 分)

#include 
#include 
#include 
#include 
#include
#include
using namespace std;
vector in, level;
#define C(X) cout< v;
int isprime(int data)
{
    if (data==1) data += 1;
    for (int i = 2; i <(int)sqrt((int)data)+1; i++)
    {
        if (data%i==0)
        {
            data++;
            i = 1;
        }
    }
    return data;
}

string ins(int data,int b)
{
    for (int i = 0; i < b-1; i++)
    {
        int temp = (data + i * i) % b;
        if(v[temp]==false)
        {
            v[temp] = true;
            return to_string(temp)+" ";
        }
    }
    return "- ";
}

int main() {
    cin >> M >> N;
    M = isprime(M);
    v.resize(M, false);
    for (int i = 0; i < N; i++)
    {
        cin >> a;
        string x=ins(a,M);
        if (i!=N-1)
            C(x);
        else
        {
            x.erase(x.end() - 1, x.end());
            C(x);
        }
    }

    ST;
    return 0;
}

你可能感兴趣的:(1078 Hashing(25 分))