#include <bits/stdc++.h>
using namespace std;
int main() {
int x;
cin >> x;
if (x == 1) {
cout << "2" << endl;
cout << "2 -1" << endl;
cout << "-1 -1" << endl;
return 0;
}
int n = 0;
int x2 = x;
while (x2) {
if (x2) {
n++;
}
x2 /= 2;
}
n = 3 * (n - 1) + 1;
cout << n << endl;
for (int i = 1; i < n; i++) {
if (i % 3 == 0) {
cout << "-1 " << i + 1 << endl;
} else if (i % 3 == 2) {
cout << i + 1 << " " << i + 2 << endl;
} else { // i % 3 == 1
int second_neighbour = -1;
if (1 << (i / 3) & x && second_neighbour != i + 1) {
second_neighbour = n;
}
cout << i + 1 << " " << second_neighbour << endl;
}
}
cout << "-1 -1" << endl;
}
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 | #include <bits/stdc++.h> using namespace std; int main() { int x; cin >> x; if (x == 1) { cout << "2" << endl; cout << "2 -1" << endl; cout << "-1 -1" << endl; return 0; } int n = 0; int x2 = x; while (x2) { if (x2) { n++; } x2 /= 2; } n = 3 * (n - 1) + 1; cout << n << endl; for (int i = 1; i < n; i++) { if (i % 3 == 0) { cout << "-1 " << i + 1 << endl; } else if (i % 3 == 2) { cout << i + 1 << " " << i + 2 << endl; } else { // i % 3 == 1 int second_neighbour = -1; if (1 << (i / 3) & x && second_neighbour != i + 1) { second_neighbour = n; } cout << i + 1 << " " << second_neighbour << endl; } } cout << "-1 -1" << endl; } |
English