90pts了,求助卡常
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m;
bool status[N]={false};
int gcd(int a, int b) {
int az = __builtin_ctz(a);
int bz = __builtin_ctz(b);
int z = min(az, bz);
b >>= bz;
while (a) {
a >>= az;
int diff = a - b;
az = __builtin_ctz(diff);
b = min(a, b), a = abs(diff);
}
return b << z;
}
inline int checkgcd(int a)
{
for(int i=1;i<=n;i++)
{
if(status[i]==true)
{
if(gcd(a,i)!=1)
{
return i;
}
}
}
return -1;
}
int main()
{
//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//cin>>n>>m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
char q[10];
int k;
//cin>>q>>k;
scanf("%s %d",&q[0],&k);
if(q[0]=='+')
{
if(status[k]==true)
{
//cout<<"Already on"<<endl;
printf("Already on\n");
continue;
}
else
{
int result=checkgcd(k);
if(result!=-1)
{
//cout<<"Conflict with "<<checkgcd(k)<<endl;
printf("Conflict with %d\n",result);
continue;
}
else
{
status[k]=true;
//cout<<"Success"<<endl;
printf("Success\n");
continue;
}
}
}
else if(q[0]=='-')
{
if(status[k]==false)
{
//cout<<"Already off"<<endl;
printf("Already off\n");
continue;
}
else
{
status[k]=false;
//cout<<"Success"<<endl;
printf("Success\n");
continue;
}
}
}
return 0;
}