#include <bits/stdc++.h> using namespace std; void solve() { int k; cin >> k; bool was = false; int cnt = 1; vector<pair<int, int> > v; v.push_back({-1, -1}); v.push_back({0, -1}); for (int i = 31; i >= 0; i--) { if (was) { if ((k>>i)&1) { v.push_back({cnt, 0}); } else { v.push_back({cnt, -1}); } v.push_back({cnt + 1, cnt}); cnt += 2; } if ((k>>i)&1) { was = true; } } int n = cnt+1; auto convert = [&](int x) { if (x == -1) return -1; return n - x; }; cout << n << "\n"; for (int i = v.size() - 1; i >= 0; i--) { int x = v[i].first; int y = v[i].second; cout << convert(v[i].first) << " " << convert(v[i].second) << "\n"; } } int main() { ios_base::sync_with_stdio(false); cout.precision(15); cout << fixed; cin.tie(0); int T = 1; //cin >> T; for (int tst = 0; tst < T; tst++) { solve(); } return 0; }
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; void solve() { int k; cin >> k; bool was = false; int cnt = 1; vector<pair<int, int> > v; v.push_back({-1, -1}); v.push_back({0, -1}); for (int i = 31; i >= 0; i--) { if (was) { if ((k>>i)&1) { v.push_back({cnt, 0}); } else { v.push_back({cnt, -1}); } v.push_back({cnt + 1, cnt}); cnt += 2; } if ((k>>i)&1) { was = true; } } int n = cnt+1; auto convert = [&](int x) { if (x == -1) return -1; return n - x; }; cout << n << "\n"; for (int i = v.size() - 1; i >= 0; i--) { int x = v[i].first; int y = v[i].second; cout << convert(v[i].first) << " " << convert(v[i].second) << "\n"; } } int main() { ios_base::sync_with_stdio(false); cout.precision(15); cout << fixed; cin.tie(0); int T = 1; //cin >> T; for (int tst = 0; tst < T; tst++) { solve(); } return 0; } |