为什么wa了前6个点
查看原帖
为什么wa了前6个点
292029
幽理家的男人楼主2020/10/6 21:44
0#include<bits/stdc++.h>//学的第一篇题解(但是蒟蒻不认识那个语言)
using namespace std;
const int mode=51371;
const int prime=1926817;
int t,n,temp,vis[mode+1000];
int read()//快读 
{
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)){x=x*10+ch-48;ch=getchar();} 
	return x*f;
}
int hash(int num){//vis[i]数组里存的是以i为哈希值的数
	int ha=(num%mode+mode+prime)%mode;
	while(vis[ha]!=num&&vis[ha]){
		ha=(ha+prime)%mode;
	}//vis[ha]==ha说明这个数已经出现过了,vis[ha]==0说明第一次出现 
	return ha;
}
int main(){
	cin>>t;
	while(t--){
		n=read();
		memset(vis,0,sizeof(vis));
		for(int i=1;i<=n;++i){
			temp=read();
			int h=hash(temp);
			if(vis[h]==0){//若没出现则把它存下来
				vis[h]=temp;
				printf("%d ",temp);
			}
		}
		cout<<"\n";
	}
}

这道题调了一晚上了QAQ(蒟蒻求助)

2020/10/6 21:44
加载中...