#include <bits/stdc++.h>
using namespace std;
vector<int> G[105];
vector<int> ans[105];
int main()
{
ios_base::sync_with_stdio(0);
int k;
cin>>k;
int p=0;
while(k>=(1<<(p+1)))p++;
int cnt=1;
p--;
if(p==-1)
{
cnt++;
G[cnt-1].push_back(cnt);
}
while(p>=0)
{
cnt++;
G[cnt-1].push_back(cnt);
cnt++;
G[cnt-1].push_back(cnt);
G[cnt-2].push_back(cnt);
if((k&(1<<p))!=0)
{
cnt++;
G[cnt-1].push_back(cnt);
G[1].push_back(cnt);
}
p--;
}
for(int i=1;i<=cnt;i++)
{
for(int u:G[i])ans[cnt+1-u].push_back(cnt+1-i);
}
for(int i=1;i<=cnt;i++)
{
while(ans[i].size()<2)ans[i].push_back(-1);
}
cout<<cnt<<endl;
for(int i=1;i<=cnt;i++)cout<<ans[i][0]<<" "<<ans[i][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 38 39 40 41 42 43 44 45 46 | #include <bits/stdc++.h> using namespace std; vector<int> G[105]; vector<int> ans[105]; int main() { ios_base::sync_with_stdio(0); int k; cin>>k; int p=0; while(k>=(1<<(p+1)))p++; int cnt=1; p--; if(p==-1) { cnt++; G[cnt-1].push_back(cnt); } while(p>=0) { cnt++; G[cnt-1].push_back(cnt); cnt++; G[cnt-1].push_back(cnt); G[cnt-2].push_back(cnt); if((k&(1<<p))!=0) { cnt++; G[cnt-1].push_back(cnt); G[1].push_back(cnt); } p--; } for(int i=1;i<=cnt;i++) { for(int u:G[i])ans[cnt+1-u].push_back(cnt+1-i); } for(int i=1;i<=cnt;i++) { while(ans[i].size()<2)ans[i].push_back(-1); } cout<<cnt<<endl; for(int i=1;i<=cnt;i++)cout<<ans[i][0]<<" "<<ans[i][1]<<endl; } |
English