关于刚刚的 E 题
  • 板块学术版
  • 楼主George1123
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/9/12 23:54
  • 上次更新2023/11/5 13:18:18
查看原帖
关于刚刚的 E 题
118365
George1123楼主2020/9/12 23:54

一直 WA#15,明明没有问题啊!!!

他说 1w 次,我感觉我这个不到 1w 次

#include <bits/stdc++.h>
using namespace std;

//Start
typedef long long ll;
typedef double db;
#define mp(a,b) make_pair((a),(b))
#define x first
#define y second
#define be(a) (a).begin()
#define en(a) (a).end()
#define sz(a) int((a).size())
#define pb(a) push_back(a)
#define R(i,a,b) for(int i=(a),I=(b);i<I;i++)
#define L(i,a,b) for(int i=(b)-1,I=(a)-1;i>I;i--)
const int iinf=0x3f3f3f3f;
const ll linf=0x3f3f3f3f3f3f3f3f;

//Data
const ll N=1e5;
ll n,x=1;
ll Pow(ll a,ll x){
	ll res=1;
	for(;x;a*=a,x>>=1)if(x&1) res*=a;
	return res;
}

//Sieve
bitset<N+1> np;
vector<ll> prime;
void Sieve(ll n){
	np.set(1);
	R(i,2,n){
		if(!np[i]) prime.pb(i);
		for(ll p:prime){
			if(i*p>=n) break;
			np.set(i*p);
			if(i%p==0) break;
		}
	}
}

//Main
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n,Sieve(n+1);
	for(ll p:prime)
		if(p*p<=n){
			cout<<"B "<<p<<endl;
			ll one; cin>>one;
			if(p<=50){
				ll l=0,r=ceil(log(n)/log(p)+0.001)+1;
				while(r-l>1){
					ll mid=(l+r)>>1;
					cout<<"A "<<Pow(p,mid)<<endl;
					ll cnt; cin>>cnt;
					if(cnt>0) l=mid;
					else r=mid;
				}
				x*=Pow(p,l);
			} else {
				R(i,1,20){
					cout<<"A "<<Pow(p,i)<<endl;
					ll cnt; cin>>cnt;
					if(cnt<=0){x*=Pow(p,i-1);break;}
				}
			}
			
		} else break;
	ll nn=sqrt(sz(prime))+1,now=0;
	cout<<"A "<<1<<endl;
	ll sum,lb=-1,rb=-1; cin>>sum;
	R(i,0,sz(prime))if(1ll*prime[i]*prime[i]>1ll*n){
		cout<<"B "<<prime[i]<<endl;
		ll cnt; cin>>cnt,sum-=cnt,now++;
		if(now>=nn){
			cout<<"A "<<1<<endl;
			ll smt; cin>>smt;
			if(smt!=sum){lb=i+1-nn,rb=i+1;break;}
			now=0;
		}
	}
	if(!~lb){
		cout<<"A "<<1<<endl;
		ll smt; cin>>smt;
		if(smt!=sum){lb=sz(prime)-now,rb=sz(prime);}
		now=0;
	}
	if(~lb){
		R(i,lb,rb){
			cout<<"A "<<prime[i]<<endl;
			ll cnt; cin>>cnt;
			if(cnt>0){x*=prime[i];break;}
		}
	}
	cout<<"C "<<x<<endl;
	return 0;
}
2020/9/12 23:54
加载中...