搞不懂为什么找不到要+1,难道是为了区别找的到?
int N; int Msize, M; bool isprime(int n){ if(n<=1) return false; for(int i=2;i*i<=n;i++){ if(n%i==0) return false; } return true; } int main(){ cin>>Msize>>N>>M; while(!isprime(Msize)) Msize++; vector<int> vs(Msize); int a; for(int i=0;i<N;i++){ cin>>a; int j; for(j=0;j<Msize;j++){ int pos=(a+j*j)%Msize; if(vs[pos]==0){ vs[pos]=a; break; } } if(j==Msize){ printf("%d cannot be inserted. ", a); } } int res=0; for(int i=0;i<M;i++){ cin>>a; for(int j=0;j<=Msize;j++){ res++; int pos=(a+j*j)%Msize; if(vs[pos]==a || vs[pos]==0) break; } } printf("%.1f", 1.0*res/M); return 0; }