→ justkusoit :先謝謝大大,我會慢慢研究 11/15 20:55
※ 引述《justkusoit (柚鬧柚笑)》之銘言:
: f:N→N^2 (2維)
: N(自然數)
: bijection
: 1→(1,1)
: 2→(2,1)
: 3→(1,2)
: 4→(1,3)
: 5→(2,2)
: 6→(3,1)
: 7→(4,1)
: 8→(3,2)
: 9→(2,3)
: 10→(1,4)
: 11→(1,5)
: 12→(2,4)
: 13→(3,3)
: 依此類推下去
: 畫個粗糙的示意圖
: |\ \
: \ \ \
: \ \ \
: |\ \ \ \
: \ \ \ \ \
: \ \ \ \ \
: |\ \ \ \ \ \
: \ \ \ \ \ \ \
: __\ \__\ \__\ \__\
: 圖畫得不好,先謝謝幫忙的大大們。
想法就跟原PO要的一樣
以下按照所要的作法依序解決~
1. 給定k,先找出k前面有幾層(n) (不包含k所在的那一層 k=1時 n=0)
(1+2+...+n)<k≦(1+2+...+n)+(n+1)
n(n+1)/2<k≦(n+1)(n+2)/2
8(n(n+1)/2)+1<8k+1≦8((n+1)(n+2)/2)+1
(2n+1)^2<8k+1≦(2n+3)^2
2n+1<√(8k+1)≦2n+3
n-1<(√(8k+1)-3)/2≦n
規定 c(x):代表大於或等於x的最小整數
所以 c(√(8k+1)-3)/2)=n
2.因為k前面有n層
所以剩下m=k-(1+2+...+n)=k-n(n+1)/2個數字
3.以n為奇數或偶數分case
n為偶數:座標為(m,n+2-m)
n為奇數:座標為(n+2-m,m)
綜合起來就是 ((-1)^n+1)/2*(m,n+2-m)+((-1)^(n+1)+1)/2*(n+2-m,m)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.34.121