挑战(二)的一些补充

原文

挑战(二)是一个数学问题,但原文中缺乏严谨的数学解释;而且yuzan1830本来的问题是射线经过了哪些点,而不是多少点。因此这里补充两方面的内容:

  1. 邻接距离(邻接向量)的证明。
  2. 如何将坐标 ( x , y ) (x,y) (x,y)转化为 N a N_a Na的形式。

正四边形

首先是第 n 0 n_0 n0层的第 a a a个点的坐标 N a ( x , y ) N_a(x,y) Na(x,y)

( x , y ) = { ( a − 1 , n 0 − a + 1 ) 0 < a ⩽ n 0 ( 2 n 0 − a + 1 , n 0 − a + 1 ) n 0 < a ⩽ 2 n 0 ( 2 n 0 − a + 1 , − 3 n 0 + a − 1 ) 2 n 0 < a ⩽ 3 n 0 ( − 4 n 0 + a − 1 , − 3 n 0 + a − 1 ) 3 n 0 < a ⩽ 4 n 0 (x,y)=\begin{cases} (a-1,n_0-a+1)&0<a\leqslant n_0\\ (2n_0-a+1,n_0-a+1)&n_0<a\leqslant 2n_0\\ (2n_0-a+1,-3n_0+a-1)&2n_0<a\leqslant 3n_0\\ (-4n_0+a-1,-3n_0+a-1)&3n_0<a\leqslant 4n_0 \end{cases} (x,y)=(a1,n0a+1)(2n0a+1,n0a+1)(2n0a+1,3n0+a1)(4n0+a1,3n0+a1)0<an0n0<a2n02n0<a3n03n0<a4n0

坐标的得出还是比较直观的,原文如下,这里不再解释。

考虑 y y y轴正半轴与第一象限组成的区域,通过观察不难发现这个区域中第 n 0 n_0 n0层的点包括 N 1 , N 2 , … , N n 0 N_1,N_2,\dots,N_{n_0} N1,N2,,Nn0,且横坐标顺时针递增。 同理, x x x轴正半轴与第四象限组成的区域中的点包括 N n 0 + 1 , N n 0 + 2 , ⋯   , N 2 n 0 N_{n_0+1},N_{n_0+2},\cdots,N_{2n_0} Nn0+1,Nn0+2,,N2n0,且横坐标顺时针递减。 y y y轴负半轴与第三象限组成的区域中的点包括 N 2 n 0 + 1 , N 2 n 0 + 2 , ⋯   , N 3 n 0 N_{2n_0+1},N_{2n_0+2},\cdots,N_{3n_0} N2n0+1,N2n0+2,,N3n0,且横坐标顺时针递减。 x x x轴负半轴与第二象限组成的区域中的点包括 N 3 n 0 + 1 , N 3 n 0 + 2 , ⋯   , N 4 n 0 N_{3n_0+1},N_{3n_0+2},\cdots,N_{4n_0} N3n0+1,N3n0+2,,N4n0,且横坐标顺时针递增。

容易发现 ∣ x ∣ + ∣ y ∣ = n 0 \vert x\vert+\vert y\vert=n_0 x+y=n0,即点 N a N_a Na在以原点为中心、半对角线长为 n 0 n_0 n0的倾斜正方形上。又因为 a a a的取值是连续整数, x , y x,y x,y a a a的系数的绝对值为 1 1 1,所以 x , y x,y x,y的取值也是连续的整数,图中的点一定是满足 ∣ x ∣ + ∣ y ∣ ⩽ n \vert x\vert+\vert y\vert\leqslant n x+yn的所有整点。

对于图中两点 N ( x 1 , y 1 ) , M ( x 2 , y 2 ) N(x_1,y_1),M(x_2,y_2) N(x1,y1),M(x2,y2),记 N M → = ( x 2 − x 1 , y 2 − y 1 ) = r ⃗ \overrightarrow{NM}=(x_2-x_1,y_2-y_1)=\vec r NM =(x2x1,y2y1)=r ,邻接向量为 d ⃗ \vec d d 。原文给出的结论是

d ⃗ = r ⃗ gcd ⁡ ( Δ x , Δ y ) = r ⃗ gcd ⁡ ( x 2 − x 1 , y 2 − y 1 ) \vec d=\dfrac{\vec r}{\gcd(\Delta x,\Delta y)}=\dfrac{\vec r}{\gcd(x_2-x_1,y_2-y_1)} d =gcd(Δx,Δy)r =gcd(x2x1,y2y1)r

下面给出证明。记点 N N N加上 k k k d ⃗ \vec d d 后得到的点 ( x 1 + k x d ⃗ , y 1 + k y d ⃗ ) (x_1+kx_{\vec d},y_1+ky_{\vec d}) (x1+kxd ,y1+kyd )为点 N k N^k Nk。只需证明两件事实:

事实1: N k N^k Nk是图中的点,则 k k k一定属于一段连续区间,且 k k k一定能取该区间内的所有整数。

证明: 因为 N , d ⃗ N,\vec d N,d 的坐标 x 1 , y 1 , x d ⃗ , y d ⃗ x_1,y_1,x_{\vec d},y_{\vec d} x1,y1,xd ,yd 均是整数,所以 k k k为整数时, N k N^k Nk一定是整点。

  • 显然 k = 0 k=0 k=0 N k N^k Nk是图中的点(就是 N N N)。

  • 对任意的 k 0 > 0 k_0>0 k0>0

    • N k 0 N^{k_0} Nk0不是图中的点,由于图中的点是正方形 ∣ x ∣ + ∣ y ∣ = n \vert x\vert+\vert y\vert=n x+y=n内的所有整点,而 N k 0 N^{k_0} Nk0是整点,所以 N k 0 N^{k_0} Nk0一定在正方形外,则 k > k 0 k>k_0 k>k0时有

      N N k 0 → k 0 = N k 0 N k → k − k 0 = d ⃗ \dfrac{\overrightarrow{NN^{k_0}}}{k_0}=\dfrac{\overrightarrow{N^{k_0}N^k}}{k-k_0}=\vec d k0NNk0 =kk0Nk0Nk =d

      由于 k 0 > 0 , k − k 0 > 0 k_0>0,k-k_0>0 k0>0,kk0>0 N N k 0 → , N k 0 N k → \overrightarrow{NN^{k_0}},\overrightarrow{N^{k_0}N^k} NNk0 ,Nk0Nk 同向,所以 N k N^k Nk位于正方形外,不是图中的点。

      总结一下就是:若 k = k 0 k=k_0 k=k0 N k N^k Nk不是图中的点,则 k > k 0 k>k_0 k>k0 N k N^k Nk都不是图中的点。

    • N k 0 N^{k_0} Nk0是图中的点,同理可得 N k 0 N^{k_0} Nk0在正方形内,则 0 < k < k 0 0<k<k_0 0<k<k0时有

      N N k → k = N k N k 0 → k 0 − k = d ⃗ \dfrac{\overrightarrow{NN^k}}k=\dfrac{\overrightarrow{N^kN^{k_0}}}{k_0-k}=\vec d kNNk =k0kNkNk0 =d

      同理有 N N k → , N k N k 0 → \overrightarrow{NN^k},\overrightarrow{N^kN^{k_0}} NNk ,NkNk0 同向,所以 N k N^k Nk位于正方形内,而且是整点,所以是图中的点。

      总结一下就是:若 k = k 0 k=k_0 k=k0 N k N^k Nk是图中的点,则 0 < k < k 0 0<k<k_0 0<k<k0 N k N^k Nk都是图中的点。

    由此可以得出结论:若 k k k为大于 0 0 0的整数,则必存在 k 1 > 0 k_1>0 k1>0,使得 k ⩽ k 1 k\leqslant k_1 kk1时, N k N^k Nk都是图中的点; k > k 1 k>k_1 k>k1时, N k N^k Nk都不是图中的点。

  • k < 0 k<0 k<0时,同理可以得到必存在 k 2 < 0 k_2<0 k2<0,使得 k ⩾ k 2 k\geqslant k_2 kk2时, N k N^k Nk都是图中的点; k < k 2 k<k_2 k<k2时, N k N^k Nk都不是图中的点。

因此 k k k满足 k 2 ⩽ k ⩽ k 1 k_2\leqslant k\leqslant k_1 k2kk1,且能取整数。

事实2: k k k不是整数时, N k N^k Nk一定不是图中的点。

证明: N k N^k Nk的坐标为 ( x 1 + k x d ⃗ , y 1 + k y d ⃗ ) (x_1+kx_{\vec d},y_1+ky_{\vec d}) (x1+kxd ,y1+kyd )。根据 d ⃗ \vec d d 的定义, x d ⃗ , y d ⃗ x_{\vec d},y_{\vec d} xd ,yd 是互质的整数。将 k k k写成既约分数 p q \dfrac pq qp的形式( p , q p,q p,q互质, q ≠ 1 q\neq 1 q=1)。若 k x d ⃗ = p x d ⃗ q kx_{\vec d}=\dfrac{px_{\vec d}}q kxd =qpxd 是整数,则 q q q x d ⃗ x_{\vec d} xd 的因数,于是 p , y d ⃗ p,y_{\vec d} p,yd 都与 q q q互质,则 k y d ⃗ = p y d ⃗ q ky_{\vec d}=\dfrac{py_{\vec d}}q kyd =qpyd 就不是整数。反之,若 k y d ⃗ ky_{\vec d} kyd 是整数,则 k x d ⃗ kx_{\vec d} kxd 就不是整数。于是 N k N^k Nk不是整点,必然不是图中的点。

上面点 N a N_a Na的坐标是分象限讨论得出的,因此继续分象限讨论就可以反解出 n 0 n_0 n0 a a a。例如,在 y y y轴正半轴与第一象限组成的区域内, x ⩾ 0 , y > 0 x\geqslant 0,y>0 x0,y>0,而此时 x = a − 1 , y = n 0 − a + 1 x=a-1,y=n_0-a+1 x=a1,y=n0a+1,解得 n 0 = x + y , a = x + 1 n_0=x+y,a=x+1 n0=x+y,a=x+1。事实上,根据 ∣ x ∣ + ∣ y ∣ = n 0 \vert x\vert+\vert y\vert=n_0 x+y=n0可以直接算出 n 0 n_0 n0

( n 0 , a ) = { ( x + y , x + 1 ) x ⩾ 0 , y > 0 ( x − y , x − 2 y + 1 ) x > 0 , y ⩽ 0 ( − x − y , − 3 x − 2 y + 1 ) x ⩽ 0 , y < 0 ( − x + y , − 3 x + 4 y + 1 ) x < 0 , y ⩾ 0 (n_0,a)=\begin{cases} (x+y,x+1)&x\geqslant 0,y>0\\ (x-y,x-2y+1)&x>0,y\leqslant 0\\ (-x-y,-3x-2y+1)&x\leqslant 0,y<0\\ (-x+y,-3x+4y+1)&x<0,y\geqslant 0 \end{cases} (n0,a)=(x+y,x+1)(xy,x2y+1)(xy,3x2y+1)(x+y,3x+4y+1)x0,y>0x>0,y0x0,y<0x<0,y0

k k k所有可能的取值依次代入 N a k N_a^k Nak的坐标,然后根据上式就可解出 n 0 , a n_0,a n0,a,用 N a N_a Na表示。

正六边形

两年前,我和yuzan1830决定建立丑陋的直角坐标系,通过解三角形来表示坐标。当时在讨论正四边形的情况时,我们先解决了邻接距离的问题,再解决了坐标的问题;而在正六边形这里却贸然先整坐标。其实在接下来解决正六边形中的邻接距离的时候,我们已经开辟了另一条道路。

当时我灵光一闪,搞了两个基底 e ⃗ 1 = ( 1 , 0 ) , e ⃗ 2 = ( cos ⁡ 6 0 ∘ , sin ⁡ 6 0 ∘ ) \vec e_1=(1,0),\vec e_2=(\cos 60^{\circ},\sin 60^{\circ}) e 1=(1,0),e 2=(cos60,sin60),其实是建立了一个仿射坐标系:


这样图中每一个点可以用一个二维坐标表示,然后本人尝试着用正四边形的方法求邻接距离。这样可靠吗?我们试着将坐标系还原成直角坐标系:


可以看到所有的点仍然在一个六边形内,这个六边形长得有点怪。

{ ∣ x ∣ ⩽ n ∣ y ∣ ⩽ n ∣ x + y ∣ ⩽ n \begin{cases} \vert x\vert\leqslant n\\ \vert y\vert\leqslant n\\ \vert x+y\vert\leqslant n \end{cases} xnynx+yn


不过问题的关键在于:这个六边形仍然是一个凸多边形,并且图中的点恰好是六边形内的所有整点。 于是正四边形中的结论仍然成立。

既然如此,能不能把原来的正六边形转化成上图这种六边形,然后重新整坐标?全是整点,岂不爽哉?

于是唯一的问题就是坐标 ( x , y ) (x,y) (x,y) ( n 0 , a ) (n_0,a) (n0,a)的互相转化。比较恶心,下面直接给出结果:

( x , y ) = { ( − n 0 + a − 1 , n 0 ) 0 < a ⩽ n 0 ( − n 0 + a − 1 , 2 n 0 − a + 1 ) n 0 < a ⩽ 2 n 0 ( n 0 , 2 n 0 − a + 1 ) 2 n 0 < a ⩽ 3 n 0 ( 4 n 0 − a + 1 , − n 0 ) 3 n 0 < a ⩽ 4 n 0 ( 4 n 0 − a + 1 , − 5 n 0 + a − 1 ) 4 n 0 < a ⩽ 5 n 0 ( − n 0 , − 5 n 0 + a − 1 ) 5 n 0 < a ⩽ 6 n 0 ( n 0 , a ) = { ( y , x + y + 1 ) x < 0 , y ⩾ − x ( x + y , 2 x + y + 1 ) x ⩾ 0 , y > 0 ( x , 2 x − y + 1 ) x > 0 , − x < y ⩽ 0 ( − y , − x − 4 y + 1 ) x > 0 , y ⩽ − x ( − x − y , − 5 x − 4 y + 1 ) x ⩽ 0 , y < 0 ( − x , − 5 x + y + 1 ) x < 0 , 0 ⩽ y < − x \begin{aligned} (x,y)&=\begin{cases} (-n_0+a-1,n_0)&0<a\leqslant n_0\\ (-n_0+a-1,2n_0-a+1)&n_0<a\leqslant 2n_0\\ (n_0,2n_0-a+1)&2n_0<a\leqslant 3n_0\\ (4n_0-a+1,-n_0)&3n_0<a\leqslant 4n_0\\ (4n_0-a+1,-5n_0+a-1)&4n_0<a\leqslant 5n_0\\ (-n_0,-5n_0+a-1)&5n_0<a\leqslant 6n_0 \end{cases}\\ (n_0,a)&=\begin{cases} (y,x+y+1)&x<0,y\geqslant -x\\ (x+y,2x+y+1)&x\geqslant 0,y>0\\ (x,2x-y+1)&x>0,-x<y\leqslant 0\\ (-y,-x-4y+1)&x>0,y\leqslant -x\\ (-x-y,-5x-4y+1)&x\leqslant 0,y<0\\ (-x,-5x+y+1)&x<0,0\leqslant y<-x \end{cases} \end{aligned} (x,y)(n0,a)=(n0+a1,n0)(n0+a1,2n0a+1)(n0,2n0a+1)(4n0a+1,n0)(4n0a+1,5n0+a1)(n0,5n0+a1)0<an0n0<a2n02n0<a3n03n0<a4n04n0<a5n05n0<a6n0=(y,x+y+1)(x+y,2x+y+1)(x,2xy+1)(y,x4y+1)(xy,5x4y+1)(x,5x+y+1)x<0,yxx0,y>0x>0,x<y0x>0,yxx0,y<0x<0,0y<x

手生疏了,写不了代码了。

纠正

原文曾经提到过:暴力建系的方法可以扩展到任意正多边形。真是这样吗?

把其它正多边形也拿来建立仿射坐标系然后强塞进直角坐标系里试试:

上图为正三角形,图中的点确实是一个三角形内的所有整点,不过明显看起来不舒服。那其它的正多边形呢?

在正 n n n边形中( n ⩾ 3 n\geqslant 3 n3),设基底 e 1 ⃗ = ( 1 , 0 ) , e 2 ⃗ = ( cos ⁡ 2 π n , sin ⁡ 2 π n ) \vec{e_1}=(1,0),\vec{e_2}=\left(\cos\dfrac{2\pi}n,\sin\dfrac{2\pi}n\right) e1 =(1,0),e2 =(cosn2π,sinn2π),则对任意 0 ⩽ k ⩽ n − 1 0\leqslant k\leqslant n-1 0kn1,需要存在唯一整数对 ( p , q ) (p,q) (p,q),满足

p e 1 ⃗ + q e 2 ⃗ = ( cos ⁡ 2 k π n , sin ⁡ 2 k π n ) p\vec{e_1}+q\vec{e_2}=\left(\cos\dfrac{2k\pi}n,\sin\dfrac{2k\pi}n\right) pe1 +qe2 =(cosn2kπ,sinn2kπ)

逐个试验也能发现不是所有正多边形都能转化成集中分布的整点。果然正六边形还是最美的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
《DRAM技术精解》是一本关于动态随机存取存储器(DRAM)技术的重要参考书。本书是第版,经过深入研究和实践,对第一版进行了补充和更新。 书中首先介绍了DRAM的基本原理和结构。DRAM是一种常见的计算机主存储器,采用电容来存储数据,并借助电容电荷的存放和释放来读写数据。本书详细解释了DRAM的内部结构,包括位线、单元电容、行选择线和列选择线等重要组成部分。 其次,本书对DRAM的读写过程进行了深入的分析和解释。涉及了DRAM读写加速技术、预取缓存、行缓存和列缓存等内容。读者可以通过学习这些内容,更好地理解和应用DRAM技术。 本书还介绍了DRAM的性能和可靠性优化技术。讲解了如何通过改进DRAM的访问速度、容量和稳定性来提高系统的性能和可靠性。同时,还对DRAM的错误检测和纠正技术进行了详细阐述,以提高系统的数据完整性和可靠性。 此外,本书还包括了面向DRAM技术发展的新挑战和前景的讨论。讲述了DRAM容量扩大、功耗优化、高速传输和可扩展性等领域的最新研究成果和未来趋势。 总而言之,《DRAM技术精解》第版是一本全面系统地介绍和解析DRAM技术的重要参考书。读者通过学习本书可以深入了解DRAM的内部结构、读写过程、性能优化和可靠性技术,对DRAM技术有更深入的认识,并为应对未来的技术挑战提供有益的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值