#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, s;
scanf("%d%d", &n, &s);
vector<int> B(n+1,0);
for(int i = 0; i < s; i++)
{
int x;
scanf("%d", &x);
B[x]=1;
}
vector<int> state(n+1,0);
int new_A=n;
vector<pair<int,int>>res;
vector<int>res3;
for(int i=1; i<=n; i++)
{
int st=0;
for(int j=1; j*j<=i; j++)
if(i%j==0)
{
st+=state[j];
if(j*j!=i)
st+=state[i/j];
}
//cout<<i<<" "<<st<<"\n";
if(st%2!=B[i])
if(B[i])
{
res.push_back({1,i});
state[i]=1;
}
else
{
res3.push_back(i);
res.push_back({2,++new_A});
state[i]=1;
}
}
if(res.size()==1)
{
printf("2\n3 1\n1 %d %d\n",n+1,res[0].second);
return 0;
}
printf("%d\n", res.size()+res3.size()-1);
for(int i=0; i<res3.size(); i++)
printf("3 %d\n",res3[i]);
printf("%d %d %d\n",res[1].first,res[0].second,res[1].second);
for(int i=2; i<res.size(); i++)
printf("%d %d %d\n",res[i].first,++new_A,res[i].second);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <bits/stdc++.h> using namespace std; int main() { int n, s; scanf("%d%d", &n, &s); vector<int> B(n+1,0); for(int i = 0; i < s; i++) { int x; scanf("%d", &x); B[x]=1; } vector<int> state(n+1,0); int new_A=n; vector<pair<int,int>>res; vector<int>res3; for(int i=1; i<=n; i++) { int st=0; for(int j=1; j*j<=i; j++) if(i%j==0) { st+=state[j]; if(j*j!=i) st+=state[i/j]; } //cout<<i<<" "<<st<<"\n"; if(st%2!=B[i]) if(B[i]) { res.push_back({1,i}); state[i]=1; } else { res3.push_back(i); res.push_back({2,++new_A}); state[i]=1; } } if(res.size()==1) { printf("2\n3 1\n1 %d %d\n",n+1,res[0].second); return 0; } printf("%d\n", res.size()+res3.size()-1); for(int i=0; i<res3.size(); i++) printf("3 %d\n",res3[i]); printf("%d %d %d\n",res[1].first,res[0].second,res[1].second); for(int i=2; i<res.size(); i++) printf("%d %d %d\n",res[i].first,++new_A,res[i].second); } |
English