#include <bits/stdc++.h> using namespace std; int k, n; int G[105][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> k; while ((1<<n) <= k) n++; n = 2*n-1; for (int i = 1; i < n; i += 2) { G[i][0] = i+1; G[i][1] = i+2; G[i+1][0] = i+2; G[i+1][1] = -1; } G[n][0] = n+1; G[n][1] = G[n+1][0] = G[n+1][1] = -1; bitset <32> B = k; for (int i = 2; i < n; i += 2) if (B[i/2-1]) G[i][1] = n+1; cout << n+1 << '\n'; for (int i = 1; i <= n+1; i++) cout << G[i][0] << ' ' << G[i][1] << '\n'; }
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 | #include <bits/stdc++.h> using namespace std; int k, n; int G[105][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> k; while ((1<<n) <= k) n++; n = 2*n-1; for (int i = 1; i < n; i += 2) { G[i][0] = i+1; G[i][1] = i+2; G[i+1][0] = i+2; G[i+1][1] = -1; } G[n][0] = n+1; G[n][1] = G[n+1][0] = G[n+1][1] = -1; bitset <32> B = k; for (int i = 2; i < n; i += 2) if (B[i/2-1]) G[i][1] = n+1; cout << n+1 << '\n'; for (int i = 1; i <= n+1; i++) cout << G[i][0] << ' ' << G[i][1] << '\n'; } |