#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
int fib[46]={1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170};
pair<int, int> V[1000];
int main()
{
int k;
cin>>k;
int l=k;
int ind;
if (k==1)
{
cout<<"2\n2 -1\n-1 -1\n";
return 0;
}
V[1]=make_pair(-1,-1);
V[2]=make_pair(1,-1);
for (int i=0; i<46; i++)
{
if (fib[i]>l)
{
l-=fib[i-1];
ind=i;
break;
}
}
for (int i=3; i<=ind; i++)
{
V[i]=make_pair(i-2,i-1);
}
int W=ind;
while(l>0)
{
for (int i=0; i<45; i++)
{
if (fib[i]>l)
{
l-=fib[i-1];
ind=i-1;
break;
}
}
V[W+1]=make_pair(W,ind+1);
W++;
}
cout<<W<<"\n";
for (int i=1; i<=W; i++)
{
int h=i;
if (i==1)
h=W;
else
if (i==W)
h=1;
int A=V[h].first;
int B=V[h].second;
if (A==1)
A=W;
else
if (A==W)
A=1;
if (B==1)
B=W;
else
if (B==W)
B=1;
cout<<A<<" "<<B<<"\n";
}
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <cstdio> #include <iostream> #include <vector> using namespace std; int fib[46]={1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170}; pair<int, int> V[1000]; int main() { int k; cin>>k; int l=k; int ind; if (k==1) { cout<<"2\n2 -1\n-1 -1\n"; return 0; } V[1]=make_pair(-1,-1); V[2]=make_pair(1,-1); for (int i=0; i<46; i++) { if (fib[i]>l) { l-=fib[i-1]; ind=i; break; } } for (int i=3; i<=ind; i++) { V[i]=make_pair(i-2,i-1); } int W=ind; while(l>0) { for (int i=0; i<45; i++) { if (fib[i]>l) { l-=fib[i-1]; ind=i-1; break; } } V[W+1]=make_pair(W,ind+1); W++; } cout<<W<<"\n"; for (int i=1; i<=W; i++) { int h=i; if (i==1) h=W; else if (i==W) h=1; int A=V[h].first; int B=V[h].second; if (A==1) A=W; else if (A==W) A=1; if (B==1) B=W; else if (B==W) B=1; cout<<A<<" "<<B<<"\n"; } return 0; } |
English