#include <iostream>
#include <cstdio>
#include <stack>
#include <cstring>
using namespace std;
int nextprime(int n) {
if(n > 1) {
for(;; n++) {
bool prime = true;
for(int i = 2; i*i <= n; i ++) {
if(n%i == 0) {
prime = false;
break;
}
}
if(prime)
break;
}
return n;
}
return 2;
}
#define M 11000
int main(int argc, char **argv) {
int m, n;
cin >> m >> n;
int p = nextprime(m);
int flag[M] = {};
for(int i = 0; i < n; i ++) {
int d;
scanf("%d", &d);
int r = d%p;
if(flag[r]) {
for(int i = 1; i < p; i ++) {
r = (d+i*i)%p;
if(!flag[r]) {
break;
}
}
}
if(!flag[r]) {
printf(i ? " %d" : "%d", r);
flag[r] = true;
}
else {
printf(i ? " -" : "-");
}
}
putchar('\n');
return 0;
}
1078. Hashing (25)
最新推荐文章于 2018-02-04 23:31:00 发布