的问题:给定一个数n
≥2,多少不同成对的点上的n
维n x n x n x n x n x n ... x n
点阵,其中坐标范围从0
到n - 1
,是一个距离至少 n
分开?成对的{(2,1,3,1), (3,2,1,3)}
和{(3,2,1,3), (2,1,3,1)}
不会被视为彼此不同,因为它们由相同的两个相反点组成。请注意,对的总数增长非常迅速。总对数去6
,351
,32 640
,4 881 250
,1 088 367 840
,等。
测试用例:
2 -> 0 (all pairs are at most a distance of sqrt(2) < 2 apart)
3 -> 28 (They must either be (2,2,1) or a permutation apart, or (2,2,2) apart. Each corner
has three non-corner (2,2,1) points corresponding to it. And each corner is associated
with a corner pair that is a (2,2,2). Thus. 3.5 * 8 = 28.
4 -> 4,888
5 -> 1,501,948
6 -> 486,039,360 (I would like someone to verify this if possible)
您的代码至少在理论上应该适用于n <= 5。不要对其进行硬编码,这是一个标准漏洞。
n=15
轻松产生结果的程序
n=20
但会严重遭受溢出
all pairs are at most a distance of sqrt(2) apart
但是应该更清楚地指定。