本地写了个比较破的交互器,跑第二组数据用了 9700+ 次询问。
但是交上去就 wa on 2
。
已经查了一天了还是没查出来 /kel
const int N=1e5+5;
int n,_,lim,num,sum,cnt,tot[N],vis[N],prime[N];
inline void sieve(int L=N-5) {
lep(i,2,L) if(!vis[i]) {
prime[++cnt]=i;
for(int j=i+i;j<=n;j+=i) vis[j]=true;
}
lep(i,2,L) vis[i]=true;
}
inline void find_leq_sqrtn() {
lim=sqrt(n);
lep(i,1,cnt) if(prime[i]<=lim) printf("B %d\n",prime[i]),IN(_);
lep(i,1,cnt) if(prime[i]<=lim)
for(int j=prime[i];;j+=prime[i]) {
printf("A %d\n",j),IN(_);
if(_) num*=prime[i]; else break;
}
sum=1;
lep(i,1,cnt) if(prime[i]>lim) ++sum;
printf("A 1\n"),IN(_);
if(_!=sum) {printf("C %d\n",num), exit(0);}
}
inline void work_geq_sqrtn() {
int L=0;
rep(i,cnt,1) if(prime[i]>lim) L=i;
for(int R=0;L<=cnt;L=R+1) {
R=min(L+98,cnt);
lep(i,L,R) printf("B %d\n",prime[i]),IN(_),--sum;
printf("A 1\n"),IN(_);
if(_==sum) lep(i,L,R) {
printf("A %d\n",prime[i]),IN(_);
if(_) {printf("C %d\n",num*prime[i]); exit(0);}
}
}
printf("C 1\n");
}
手动去掉 fflush(stdout)
了,不然显得很臃肿 /wq