散列2 Hashing

来源:互联网 发布:java 静态泛型 编辑:程序博客网 时间:2024/06/05 01:00

散列2 Hashing

#include<iostream>#include<cstdio>#include<string.h>#include<algorithm>using namespace std;#define N 100010#define M 100000int A[N]={0};int B[N]={0};bool isPrime(int n){    if(n < 2)         return false;    for( int i = 2; i * i <= n; i++ )    {        if( n % i == 0 )             return false;    }    return true;}int main() {    int n,m;    int a;    cin >> n >> m; //n:表长 m:数字个数     while(!isPrime(n))         n++;    for(int i=0; i<m; i++)        A[i] = -1;    for(int i=0; i<m; i++)    {        cin>>a;        for(int j=0; j<n; j++)        {            int p;             p = ( a + j*j ) % n;            if( B[p] == 0  )            {                A[i] = p;                B[p] = 1;                break;            }        }    }    for(int i=0; i<m; i++)    {        if(i == 0)        {            if(A[i] == -1)                cout << '-' ;            else                cout << A[i];        }        else        {            if(A[i] == -1)                cout << ' ' << '-' ;            else                cout << ' ' << A[i];        }    }    return 0;}