P1857 90pts求条玄关
  • 板块学术版
  • 楼主Meng142857
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/7/26 15:31
  • 上次更新2025/7/26 21:40:15
查看原帖
P1857 90pts求条玄关
384581
Meng142857楼主2025/7/26 15:31
#include<iostream>
using namespace std;
int ste[200005],pr[200005],id,maxi,mini,T,n;
bool win[200005],ntp[200005];
int main(){
	for(int i=2;i<=20000;i++){
		if(!ntp[i]){
			for(int j=i*i;j<=20000;j+=i){
				ntp[j]=true;
			}
			id++;
			pr[id]=i;
		}
	}
	for(int i=2;i<=20000;i++){
		maxi=0,mini=999999;
		int id2=1;
		while(pr[id2]<=i){
			if(!win[i-pr[id2]]){
				win[i]=true;
				mini=min(mini,ste[i-pr[id2]]);
			}
			else{
				maxi=max(maxi,ste[i-pr[id2]]);
			}
			id2++;
		}
		if(win[i]){
			ste[i]=mini+1;
		}
		else{
			ste[i]=maxi+1;
		}
	}
	cin>>T;
	for(int i=1;i<=T;i++){
		cin>>n;
		if(win[n]){
			cout<<ste[n]<<endl;
		}
		else{
			cout<<-1<<endl;
		}
	}
	return 0;
}

思路很简单,但是不知道为啥厌氧而且蜜汁WA on #9

2025/7/26 15:31
加载中...