这份代码我自己在电脑上一直卡着,卡出了很奇怪的答案,而且不过样例,但是提交却过了,能不能问一下是问什么?
代码如下:
int T,n,k,p[N/10],m[N],ans;
bitset <N> vis;
for(int i=2;i<=N;i++){
if(!vis[i]) p[++k]=i,m[i]=i;
for(int j=1;j<=k&&p[j]*i<=N;j++){
vis[p[j]*i]=1;
m[p[j]*i]=p[j];
if(i%p[j]==0) break;
}
}
scanf("%d",&T);
while(T--){
scanf("%d",&n);
ans=0;
while(m[n]!=n){
ans^=m[n];
n/=m[n];
}
ans^=n;
printf("%d\n",ans);
}
}
经过删减的核心代码(为避免被莫名其妙举报)