作者yueayase (scrya)
看板Math
标题Re: [中学] 请问一题数列级数
时间Thu Mar 23 00:42:34 2023
※ 引述《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://webptt.com/cn.aspx?n=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://webptt.com/cn.aspx?n=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
1F:推 jenshi : 感谢老师详细的说明 03/23 07:10