社区讨论

窝腰烟牌

P1871对撞机参与者 5已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mlgxsdar
此快照首次捕获于
2026/02/11 02:30
上周
此快照最后确认于
2026/02/11 02:30
上周
查看原帖
这份代码样例是不对的,但还是能A
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,num,cnt[100001];
bool a[100001];
char c;
int main() {
	cin>>n>>m;
	for(int i=1; i<=m; i++) {
		cin>>c>>num;
		if(c=='+') {
			if(a[num])cout<<"Already on\n";
			else {
				int pf[1001],nub=0,num1=num,p=0;
				for(int j=2; j*j<=num1; j++) {
					if(num1%j==0) {
						pf[++nub]=j;
						while(num1%j==0)num1/=j;
					}
				}
				if(num1>1)pf[++nub]=num1;
				for(int j=1; j<=nub; j++) {
					if(cnt[pf[j]]!=0&&cnt[pf[j]]!=num) {
						p=cnt[pf[j]];
						break;
					}
				}
				if(p)cout<<"Conflict with "<<p<<'\n';
				else {
					for(int j=1; j<=nub; j++)cnt[pf[j]]=num;
					a[num]=true;
					cout<<"Success\n";
				}
			}
		} else {
			if(a[num]) {
				int num1=num;
				for(int j=2; j*j<=num1; j++) {
					if(num1%j==0) {
						if(cnt[j]==num) cnt[j]=0;
						while(num1%j==0)num1/=j;
					}
				}
				if(num1>1&&cnt[num1]==num) cnt[num1]=0;
				a[num]=false;
				cout<<"Success\n";
			} else cout<<"Already off\n";
		}
	}
}

回复

6 条回复,欢迎继续交流。

正在加载回复...