A1145 Hashing

在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<vector>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<set>
#include<queue>
#include<unordered_map>
#include<cmath>
using namespace std;
int msize, n, m;
int isprime(int x)
{
	if (x <= 1)
		return false;
	for (int i = 2; i <= sqrt(x); i++)
	{
		if (x % i == 0)
			return false;
	}
	return true;
}
int main()
{
	cin >> msize >> n >> m;
	int a;
	while (!isprime(msize))
		msize++;
	vector<int>v(msize);
	for (int i = 0; i < n; i++)
	{
		cin >> a;
		int flag = 0;
		for (int j = 0; j <= msize; j++)
		{
			int pos = (a + j * j) % msize;
			if (v[pos] == 0)
			{
				v[pos] = a;
				flag = 1;
				break;
			}
		}
		if (!flag)
			printf("%d cannot be inserted.
", a);
	}
	int ans = 0;
	for (int i = 0; i < m; i++)
	{
		cin >> a;
		for (int j = 0; j <= msize; j++)
		{
			ans++;
			int pos = (a + j * j) % msize;
			if (v[pos] == a || v[pos] == 0) break;
		}
	}
	printf("%.1f
", ans * 1.0 / m);
	return 0;
}
原文地址:https://www.cnblogs.com/Hsiung123/p/13811954.html