AcWing 1564. 哈希
原题链接
简单
作者:
吴地文笔
,
2021-04-07 21:44:09
,
所有人可见
,
阅读 421
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+100;
int h[N];
bool prime(int x){
if(x < 2) return false;
for(int i = 2; i <= x / i; i++){
if(x % i == 0) return false;
}
return true;
}
int main(){
int MSize, n;
scanf("%d%d", &MSize, &n);
while(!prime(MSize)) MSize++; //取得哈希表长度
while(n--){
int x;
scanf("%d", &x);
int y = x % MSize;
int ans = -1;
for(int i = 0; ; i++){
int z = (y + i * i) % MSize; //正向二次探查,也要模MSize
if(i && z == y) break; //再次来到初始位置,则不能放入成功
if(!h[z]){ //可以放
h[ans = z] = x; break;
}
}
if(~ans) printf("%d ", ans);
else printf("- ");
}
return 0;
}
这个~在这里是怎么使用的?