这道题牵扯到了hash散列中的集中查询方式,随后做一个总结,对于素数方面,没有神马难度;#include<iostream>#include<stdlib.h>#include<stdio.h>#include<vector>#include<math.h>using namespace std;using std::vector;const int maxn=10010;bool vis[maxn]={false};bool isPrime(int x){ if(x<=1) return false; int sqr=sqrt(x1.0); for(int i=2;i<=sqr;i++){ if(x%i==0) return false; } return true;}int main(){ vector<char> v; int m,n; int num; scanf("%d%d",&m,&n); while(!isPrime(m)){ m++; } for(int i=0;i<n;i++){ scanf("%d",&num); int M=num%m; if(!vis[M]){ vis[M]=true; if(i==0) printf("%d",M); else printf(" %d",M); }else{ int step; for(step=1;step<m;step++){ M=(num+stepstep)%m; if(!vis[M]){ vis[M]=true; if(i==0) printf("%d",M); else printf(" %d",M); break; } } if(step>=m){ if(i>0) printf(" “); printf(”-"); } } } for(int i=0;i<v.size();i++){ if(i==0) printf("%c",v[i]); else printf(" %c",v[i]); } system(“pause”); return 0;}