1078 Hashing 发表于 2020-05-31 给出散列表长度以及插入的元素,问插入位置。重点在于判断是否为素数(保证散列表长度为素数),以及二次探测法(寻找元素插入位置)。 12345678910111213141516171819202122232425262728293031323334353637#include <bits/stdc++.h>using namespace std;int m, n, hashTable[10010];bool isPrime (int num) { if (num == 1) return false; for (int i = 2; i * i <= num; i++) { if (num %i == 0) return false; } return true;}void insert(int key) { for (int step = 0; step < m; step++) { int index = (key + step * step) % m; if (hashTable[index] == 0) { hashTable[index] = 1; cout << index; return; } } cout << "-";}int main() { cin >> m >> n; while (!isPrime(m)) m++; for (int i = 0; i < n; i++) { int key; cin >> key; if (i != 0) cout << " "; insert(key); } return 0;}