社区讨论
哎 ,救救孩子吧—为什么90分,球球了dalao们,ac闭关PWP,改了1小时了
P1871对撞机参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mdb6ph1y
- 此快照首次捕获于
- 2025/07/20 12:36 8 个月前
- 此快照最后确认于
- 2025/11/04 04:04 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,nums,pert[100001],cnt,minPr[100001];
bool is_Open[100001],is_Close[100001];
string s2[2]={"Success\n","Already off\n"},s1[3]={"Conflict with ","Success\n","Already on\n"};
char c;
void sieve(){
minPr[1] = 1;
for(int i=2;i<=100000;i++){
if(minPr[i]==0){
minPr[i]=i;
if(i<=100000/i) {
for(int j=i*i;j<=100000;j+=i)
if(minPr[j]==0)minPr[j]=i;
}
}
}
}
int cht(int x){
if(x==1)return -1;
int temp=x;
while(temp>1){
int p=minPr[temp];
if(p == 0) p = temp;
for(int i=cnt;i>=1;i--)
if(pert[i]%p==0&&is_Open[pert[i]])
return pert[i];
while(temp%p==0)temp/=p;
}
return -1;
}
int is_Ok(int id){
if(is_Open[id]) return 3;
int cnn=cht(id);
if(cnn!=-1)return cnn;
is_Open[id]=1;
pert[++cnt]=id;
return 1;
}
bool is_Dl(int id){
if(!is_Open[id]) return 1;
is_Open[id]=0;
for(int i=1;i<=cnt;i++){
if(pert[i]==id){
swap(pert[i],pert[cnt]);
cnt--;
break;
}
}
return 0;
}
int main() {
sieve();
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>c>>nums;
if(c=='+'){
int r=is_Ok(nums);
if(r==3)cout<<s1[2];
else if(r==1)cout<<s1[1];
else cout<<s1[0]<<r<<'\n';
}
else cout<<s2[is_Dl(nums)];
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...