Oleg Chaika Asked:2022-02-25 00:40:00 +0000 UTC2022-02-25 00:40:00 +0000 UTC 2022-02-25 00:40:00 +0000 UTC 矩阵中的元素编号 772 有一些包含自然数的矩阵。知道了数字,你需要在矩阵中找到它的坐标。元素的放置方式如下: 到目前为止,我已经找到了一个与最上面水平(1、3、4、10 ...)上的数字相对应的序列: a(n) = if n mod 2 == 0 then n*(n+1)/2, otherwise (n-1)*n/2 + 1. 最左边的垂直(1、2、6、7...): a(n) = n*(n+1)/2 if n is odd, otherwise (n-1)*n/2 + 1. 但是,我仍然无法弄清楚如何应用它。 例如,这个矩阵中的单元有坐标[0, 0]和19 [2, 3]等等。 python 2 个回答 Voted Best Answer TigerTV.ru 2022-02-25T03:34:30Z2022-02-25T03:34:30Z 使用this、this和this ,您可以编写以下代码: from math import sqrt def get_xy(i): d = int(sqrt(1 + (i - 1) * 8) + 1) // 2 - 1 r = i - d * (d + 1) // 2 - 1 return (r, d - r) if d & 1 else (d - r, r) i = 44444444447777777777777 p = get_xy(i) print(i, p) 结论: 44444444447777777777777 (103664287789, 194478109221) Oleg Chaika 2022-02-25T04:31:12Z2022-02-25T04:31:12Z 我似乎有一个解决方案,这是python代码: num = int(input()) sum = 1 i = 1 while (num>sum): i += 1 sum += i diff = sum - num if (i%2): Y = i - diff X = diff + 1 else: Y = diff + 1 X = i - diff 因此,我们计算数字所在的对角线的数字(这很有用,因为在对角线上,相邻数字相差 1)。这是可能的,因为每个对角线都比前一个对角线多 1 个数字。 接下来,我们看看对角线数的奇偶性。结合起来,这是对角线上的数字的数量,我们以最简单的方式计算数字在矩阵中的位置。你可以做实验。
使用this、this和this ,您可以编写以下代码:
结论:
我似乎有一个解决方案,这是python代码:
因此,我们计算数字所在的对角线的数字(这很有用,因为在对角线上,相邻数字相差 1)。这是可能的,因为每个对角线都比前一个对角线多 1 个数字。
接下来,我们看看对角线数的奇偶性。结合起来,这是对角线上的数字的数量,我们以最简单的方式计算数字在矩阵中的位置。你可以做实验。