分值 : 25 难度 : 简单题 思路 : 判断素数然后hash概念 坑点 : hash概念有点忘记了......二次平方探查都记不起来了....
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
#include <iostream>using namespace std;bool is_prime(int x){ if(x==2) return true ; if(x<2) return false ; for(int i =2 ; i<= x/2 ; i++) { if(x%i == 0 ) return false ; } return true ;}int data[10008] ;int main() { int Msize , N ; cin>>Msize >> N ; int flag =0 ; while (!flag) { Msize++; if(is_prime(Msize)) flag =1 ; } //cout <<Msize<<endl ; for(int i = 0 ; i< N ; i++) { int temp ; cin >>temp ; int h = temp % Msize; int hash = h ; bool find =false ; for(int j = 0 ; j<=Msize ; j++) { hash = (h +j*j)%Msize ; if( data[hash]==0 ) { find = true ; data[hash ]=1 ; break ; } } if(i) cout <<" "; if(!find) cout <<"-" ; else cout <<hash ; } cout <<endl ;}