【总结】pick定理Farey序列
pick定理及其证明
pick定理
结论
在一个平面直角坐标系内,以整点为顶点的简单多边形,设其内部整点数为aaa,边上(包括顶点)的整点数为bbb,则它的面积S=a+b2−1S = a+\frac b2-1S=a+2b−1
证明
三角形
对于一个最简单的三角形(只有三个顶点在格点上,边上和内部都没有点的一个三角形)如下图,面积为S=32−1=12S=\frac 32 -1=\frac 12S=23−1=21
所有面积>12>\frac 12>21的三角形均在边上或内部有点
证明:
通过平移及轴对称将三角形的一个顶点移至原点,另外两个点位于xxx轴或第一象限内。
设三角形ΔOAB\Delta OABΔOAB,O(0,0),A(a,c),B(b,d)O(0,0),A(a,c),B(b,d)O(0,0),A(a,c),B(b,d),其中ca<db\frac ca<\frac dbac<bd,面积S=ad−bc2S=\frac{ad-bc}{2}S=2ad−bc。- c=0,a>1c=0,a>1c=0,a>1时,OAOAOA边上存在整点,得证
- c=0,a=1,b=1c=0,a=1,b=1c=0,a=1,b=1时,ABABAB边上存在整点,得证
- c=0,a=1,b>1c=0,a=1,b>1c=0,a=1,b>1时,将BBB移至原点并绕原点旋转180°180\degree180°,划归到另两点在第一象限内的情况
- c≠0c\neq 0c̸=0即另两点均在第一象限时,若gcd(a,c)≠1\gcd(a,c)\neq 1gcd(a,c)̸=1或gcd(b,d)≠1\gcd(b,d)\neq 1gcd(b,d)̸=1,则OAOAOA或OBOBOB上存在整点,得证。
否则取2S=ad−bc2S=ad-bc2S=ad−bc的一个质因数ppp。
由ad≡bc(modp)ad\equiv bc\pmod pad≡bc(modp),任意取正整数k<pk<pk<p:
−adk=−bck(modp)→ka+c≡kb+d(modp)-\frac{ad}{k}=-\frac{bc}{k}\pmod p\to ka+c\equiv kb+d\pmod p−kad=−kbc(modp)→ka+c≡kb+d(modp)
则必然存在0<k<p0<k<p0<k<p,使得ka+c≡kb+d≡0(modp)ka+c\equiv kb+d\equiv 0\pmod pka+c≡kb+d≡0(modp)
因为ka+cp=ka+ck+1⋅k+1p,kb+dp=kb+dk+1⋅k+1p\frac{ka+c}{p}=\frac{ka+c}{k+1}·\frac{k+1}{p},\frac{kb+d}{p}=\frac{kb+d}{k+1}·\frac{k+1}{p}pka+c=k+1ka+c⋅pk+1,pkb+d=k+1kb+d⋅pk+1且k+1p∈(0,1]\frac{k+1}{p}\in(0,1]pk+1∈(0,1],所以整点[ka+cp,kb+dp][\frac{ka+c}{p},\frac{kb+d}{p}][pka+c,pkb+d]在ABABAB某个k+1k+1k+1等分点到原点的连线上,得证。
由上可知所有在边上和内部都没有点的三角形面积一定为12\frac 1221,定理成立。通过第二数学归纳法证明对于其它三角形定理同样成立:
- a+b2−1=12a+\frac b2-1=\frac 12a+2b−1=21成立。
- 假设对a+b2−1<na+\frac b2-1<na+2b−1<n均成立,当a+b2−1=na+\frac b2-1=na+2b−1=n时:
若三角形内部存在整点,则任选其一与三角形三个顶点连边形成三个新的小三角形,设有kkk个点落在了新连的三条边上:此时三角形总内点数a−ka-ka−k,边上的点数(b−3)+2(k+2)+3=b+2k+4(b-3)+2(k+2)+3=b+2k+4(b−3)+2(k+2)+3=b+2k+4,总面积S=a−k+b2+k+2−3=a+b2−1S=a-k+\frac b2+k+2-3=a+\frac b2-1S=a−k+2b+k+2−3=a+2b−1,得证。
若三角形内部不存在整点,任意取某个边上的整点与相对的顶点相连分成两个新的小三角形,证明同上。
综上,对于三角形pickpickpick定理成立。
多边形
将简单多边形分成若干三角形:
每次任意取多边形一条对角线连接将其分成两个新的小多边形。
设对角线上共有kkk个整点。分开前贡献为((a−(k−2))+(k−2))+(b−2)+22−1=a+b2−1((a-(k-2))+(k-2))+\frac{(b-2)+2}{2}-1=a+\frac b2-1((a−(k−2))+(k−2))+2(b−2)+2−1=a+2b−1,分开后贡献为(a−(k−2))+b−2+2k2−2=a+b2−1(a-(k-2))+\frac{b-2+2k}{2}-2=a+\frac b2-1(a−(k−2))+2b−2+2k−2=a+2b−1。
以此类推,简单多边形分成若干三角形后分别计算值不变。
得证。
例题
poj2954
直接套公式即可。
Farey序列
Farey序列是指把在000到111之间的所有分母不超过nnn的分数从小到大排列起来所形成的数列。
性质:
前一项的分母乘以后一项的分子,一定比前一项的分子与后一项分母之积大1。
用pickpickpick定理证明:
把分母不超过n的每一个000和111之间的分数都标在平面直角坐标系上(ba\frac baab对应(a,b)(a,b)(a,b))。考虑一根从原点出发的射线从xxx轴正方向逆时针旋转依次扫过的标记点就是Farey序列。
考虑对于相邻扫到的两个标记点和原点构成的三角形,由于是最简分数,所以三角形边上没有整点,且相邻说明三角形内部没有整点,所以三角形面积为12\frac 1221。三角形面积等于叉积的一半,得证。
【总结】pick定理Farey序列相关推荐
- pick定理及其证明
转自:http://www.cnblogs.com/yujunyong/articles/2010482.html pick定理:在一个平面直角坐标系内,以整点为顶点的简单多边形(任两边不交叉),它内 ...
- POJ 1265 pick 定理
首先来脑补一下几个几何知识 非常奇妙的证明:图形必在格点之外 从cut-the-knot上看到的. 问题: 设想一个平面上布满间距为1的横纵直线,形成由一个个1×1正方形组成的网格.任意给一个 ...
- poj 1265 Area(pick 定理)
链接:poj 1265 题意:从原点出发.给出一些dx,dy移动增量,终于形成一个多边形, 求多边形内部的格点数目,边上的格点数目 .以及面积. 补充知识: 1.以格子点为顶点的线段.覆盖的点的个数为 ...
- pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积
Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_ ...
- 数据结构实验之链表八:Farey序列
Description Farey序列是一个这样的序列:其第一级序列定义为(0/1,1/1),这一序列扩展到第二级形成序列(0/1,1/2,1/1),扩展到第三极形成序列(0/1,1/3,1/2,2/ ...
- 整数点与Pick定理
Pick 定理 设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 N+1/2L-1=S. 对于N与L的计算由下面的程序给出: typedef struc ...
- POJ1265(Pick定理的应用)
题目:Area 先说说什么是Pick定理吧 Pick定理:设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 S=L/2 + N-1. 而对于线段上的整点数我 ...
- Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
题目传送门 刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何. 题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数. 因为必修5和必修2的阴影很快就想到了数学中 ...
- POJ 1265 Area(Pick定理)
POJ 1265 Area(Pick定理) 根据pick定理来做 皮克定理是指一个计算点阵中顶点在格点上的多边形面积公式该公式可以表示为 2S=2a+b−2 其中a表示多边形内部的点数,b表示多边形边 ...
最新文章
- no no no.不要使用kill -9.
- Python心得--如何提高代码质量
- windows下安装mongodb步骤
- 5、线程终止方式:pthread_cleanup_push/pthread_cleanup_pop()
- 网易云信阮良: 让客户能够连接一切,把整个精彩的世界连接起来
- java nio connect_Java NIO系列教程(八) SocketChannel
- leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)
- SAP Spartacus auth.service.ts里的user调用触发的源代码位置
- Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups
- IE6/7 double padding-bottom Bug
- 韩梦飞沙Android应用集合 想法
- 小写数字转成大写的中文,方便财务对账专用
- 音频声音太小怎么调大?
- Beta阶段站立会议-02
- 搭建公司内部论坛 只需简单三步 1 (安装Discuz)
- ssssssssssssssss
- 掌纹与掌静脉融合matlab代码,手形、掌纹和掌静脉多特征融合识别
- 京东商品详情API、通过商品ID获得京东商品详情
- Python爬虫实战之爬取百度贴吧帖子
- vmware运行ubuntu虚拟机出现诡异的鼠标闪烁