推 jenshi : 感謝老師詳細的說明 03/23 07:10
※ 引述《jenshi (小旭)》之銘言:
: [img]https://upload.cc/i1/2023/03/22/2tbLZg.jpg[/img]
: 有觀察到x座標和y座標都是1-2+3-4...
: 但不知道哪時候會到A2022
可以觀察到
A1(0,0)會先往右一步再往上一步到達A3(1,1)
然後往左2步再往下2步到達A7(-1,-1)
然後往右3步再往上3步到達A13(2,2)
然後往左4步在往下4步到達A21(-2,-2)
這個過程發現走完完整n步,會到達第1+1*2+2*2+...+n*2=1+n(n+1)/2*2= 1+n(n+1)個點
然後n為奇數會是往右n步再往上步,且第A 個點的座標為((n+1)/2,(n+1)/2)
1+n(n+1)
n為偶數會是往左n步再往下n步,且第A 個點的座標為(-n/2,-n/2)
1+n(n+1)
2
所以目標就是找出最大正整數n,使得 1+n(n+1)≦2022 => n < n(n+1)≦2021
2 2
然後45 = (40+5) = 1600+400+25=2025
=> n = 44
2
=>1+44*45=1+(45-1)*45=1+45 -45 = 1+2025-45 = 1981
=> A = (-22,-22)
1981
2022-1981 = 41 < 45
所以接下來會從A 往右走41步到A
1981 2022
∴A = (-22+41,-22) = (19,-22)
2022
這應該是比較系統化的想法了
PS1: https://www.ptt.cc/bbs/Math/M.1644422554.A.155.html 應該跟這個是相似的
PS2: python實作如下:
from math import sqrt
if __name__ == '__main__':
n = int(input('Enter n: '))
# 1+k(k+1) <= n, k^2+k-(n-1) = 0 => largest k =
int([-1+sqrt(1+4(n-1))]/2) = int([-1+sqrt(4n-3)]/2)
k = int((-1+sqrt(4*n-3))/2)
if k % 2 == 0:
An = [int(-k/2), int(-k/2)]
diff = n-(1+k*(k+1))
if diff < k+1:
An[0] += diff
else:
An[0] += k+1
An[1] += diff-(k+1)
else:
An = [int((k+1)/2), int((k+1)/2)]
diff = n-(1+k*(k+1))
if diff < k+1:
An[0] -= diff
else:
An[0] -= k+1
An[1] -= diff-(k+1)
print('A{0}=({1}, {2})'.format(n, An[0], An[1]))
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.71.132 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Math/M.1679503356.A.51C.html
※ 編輯: yueayase (114.47.71.132 臺灣), 03/23/2023 00:43:49
※ 編輯: yueayase (114.47.71.132 臺灣), 03/23/2023 00:48:50
※ 編輯: yueayase (114.47.71.132 臺灣), 03/23/2023 01:16:13