格点和最大公约数

给定线段起点和终点,问这条线段上有多少个格点。

我们知道,把它平移到原点不会对这个问题有影响。一个线段(x1,y1) (x2,y2)平移到源点就变成了

(0,0) (|x2-x1|,|y2-y1|)。对于线段上每一个点的坐标,相当于  ( k*|x2-x1|, k*|y2-y1| ) (0<k<1)

要想让它是格点,就需要这两个都是整数,也就是需要k是它们公约数分之一

所以答案应该是最大公约数减去1(减去这个数自己)


数学基础:
1.求一个数的最大公约数

GCD算法

2.为什么格点数目等于最大公约数

原因,首先看一下|x1−x2|和|y1−y2|的
最大公约数代表的是啥? 其实可以看成 在横向和竖向的最大的公共等分数每一个公共等分对应一个线段上的整点,因此最大公共等分数就是最大整点个数),  比如  6 的等分点可以是 1:1:1:1:1:1分成6份 ,也可以是
 2:2:2分成3份,或者是 6,只有1份。(其实对应的是  6能被6,3,1整除)  那么 6和9的最大公共等分数是3,即6分为 2:2:2 ,
 9分为3:3:3. 那么边长为6和9的矩形,按照这样分会是什么情况呢? 

因为最大公约数代表这两个数相除之后仍然是整数的最大整数,这两个数相除的意义是什么?

是把这个矩形区域分成几块,比如(n,m)的最大公约数是k

n/k,m/k代表把这个数分成了n/k * m/k块,这个公共等分数k就对应这个对角线经过的顶点个数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值