问题概述:输入一个多边形的所有顶点坐标(一定为整数),求出这个多边形内整点的数量、边缘上的点的数量、

多边形的面积(多边形顶点输入规则:从原点右边的第一个点开始到原点结束)

输入样例:                              对应输出:

1                                              Scenario #1:

7                                              12 16 19.0

5 0

6 3

4 5

3 5

3 2

0 3

0 0

相似题:POJ 1265:Area

http://poj.org/problem?id=1265

皮克公式:S = a+b/2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积

多边形面积求法:

http://blog.csdn.net/jaihk662/article/details/51784898

#include<stdio.h>
#include<math.h>
typedef struct
{double x;double y;
}Point;
Point s[1005] = {0};
int Gcd(int a, int b)
{if(a%b==0)return b;return Gcd(b, a%b);
}
int main(void)
{int T, n, i, dx, dy, ans, t, cas;double temp, sum;scanf("%d", &T);cas = 1;while(T--){scanf("%d", &n);for(i=1;i<=n;i++)scanf("%lf%lf", &s[i].x, &s[i].y);sum = 0;for(i=1;i<=n-2;i++){temp = ((s[i].x-s[0].x)*(s[i+1].y-s[0].y)-(s[i].y-s[0].y)*(s[i+1].x-s[0].x))/2;sum += temp;}ans = 0;for(i=1;i<=n-1;i++){dx = fabs(s[i].x-s[i+1].x);dy = fabs(s[i].y-s[i+1].y);if(dx==0)ans += dy-1;else if(dy==0)ans += dx-1;else{if(dx<dy)t = dx, dx = dy, dy = t;ans += Gcd(dx, dy)-1;}}dx = fabs(s[n].x-s[1].x);dy = fabs(s[n].y-s[1].y);if(dx==0)ans += dy-1;else if(dy==0)ans += dx-1;else{if(dx<dy)t = dx, dx = dy, dy = t;ans += Gcd(dx, dy)-1;}ans += n;printf("Scenario #%d:\n%d %d %.1f\n", cas++, (int)(sum+1-ans/2), ans, sum);}return 0;
}

皮克公式(格点多边形内点的个数)相关推荐

  1. poj12652954 [皮克定理 格点多边形]【学习笔记】

    Q:皮克定理这种一句话的东西为什么还要写学习笔记啊? A:多好玩啊... PS:除了蓝色字体之外都是废话啊...  Part I 1.顶点全在格点上的多边形叫做格点多边形(坐标全是整数) 2.维基百科 ...

  2. 关于三角形面积的公式与格点多边形面积计算算法的讨论

    已知三角形三点坐标求三角形面积公式 公式: 即S=1/2[(x1y2-x2y1)+(x2y3-x3y2)+(x3y1-x1y3)] 证明过程:此链接 格点三角形求面积或求三角形里格点(整点)个数[皮克 ...

  3. uva10088格点多边形

    题目链接: 用皮克定理: 一个计算点阵中顶点在格点上的多边形面积公式:S=a+b/2-1 其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积. 1 #include<cst ...

  4. python统计excel中重复数据_EXCEL公式解读:统计不重复个数

    作者:祝洪忠 转自:Excel之家ExcelHome 小伙伴们好啊,今天咱们一起学习一下COUNTIF函数的高级应用,来看看如何使用这个函数完成不重复个数的统计. 模式化的公式为: =SUMPRODU ...

  5. c 语言len函数,巧妙利用LEN、SUBSTITUTE函数,计算EXCEL单元格内某重复字符个数

    实际的工作中,我们有时候会用到求某个单元格内某个字符个数的实际问题.对于这类问题,在深入的学习了EXCEL函数之后,或者看过我写的部分文章后,一般会很容易的给出解决答案,但有时候一些朋友往往还不能举一 ...

  6. Hunter’s Apprentice (猎人的学徒)——【Green 公式( 判断多边形边界曲线顺/逆时针】

    学习博客:https://www.cnblogs.com/kyokuhuang/p/4250526.html 伪代码: double d = 0; for (int i = 0; i < n - ...

  7. 多边形对角线交点个数

    凸N边形的对角线条数为:n(n-3)/2 因为每一个交点对应两条对角线,而两条对角线又对应着一个四边形.于是焦点个数就对应四边形的个数.问题转化成由凸n边形的n个顶点取4个顶点可组成多少个四边形的问题 ...

  8. 区域内点的个数_JAVA

    Description X晚上睡不着的时候不喜欢玩手机,也不喜欢打游戏,他喜欢数星星. Input 多组输入. 每组先输入一个整数N(N <= 10000),接着输入两个点代表矩形的左下点B(x ...

  9. Y - 区域内点的个数

    Description X晚上睡不着的时候不喜欢玩手机,也不喜欢打游戏,他喜欢数星星. Input 多组输入. 每组先输入一个整数N(N <= 10000),接着输入两个点代表矩形的左下点B(x ...

  10. 欧几里德算法与皮克定理

    欧几里德算法概述: 欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的. gcd函数的基本性质: gcd(a, ...

最新文章

  1. ssd_detected.cpp代码 head.h代码
  2. Qtum量子链AUR开发工具包即日上线
  3. C#中利用Expression表达式树进行多个Lambda表达式合并
  4. CSS 伪类(Pseudo-classes)
  5. Exchange server 2010系列教程之四 如何卸载exchange server 2010
  6. 谷歌被曝出滥用苹果后门收集用户数据
  7. 计算机考研408每日一题 day162
  8. 高斯-拉格朗日(Gauss-Legendre )Ⅱ型求积公式 数值分析 勘误 P111
  9. 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
  10. idea 设置全局豆沙绿
  11. [NOTE] NFS 和TFTP安装与配置
  12. 浅析智能访客机的应用
  13. 笔记本制作WIFI热点经常掉线问题
  14. golang——gorountine+channal
  15. 開機顯示器不顯示,提示no signal ......
  16. 企业知识语言(Enterprise Knowledge Language,EKL)
  17. 怀化市2021年高考查询成绩,2021怀化市地区高考成绩排名查询,怀化市高考各高中成绩喜报榜单...
  18. 树莓派3B+安装ubuntu16.04与ROS
  19. 数组与链表的优缺点和区别
  20. flash制作打地鼠游戏代码,打地鼠游戏编程代码

热门文章

  1. 从0开始的视频特效制作之路
  2. 网络云存储技术Windows server 2012 (项目十七 配置iSCSI传输的安全性)
  3. vCenter6.5+虚拟ISCSi
  4. 计算机论文刊物发表,计算机论文发表流程
  5. 京东Cookie抓取
  6. 微信小程序公农历转换的实现
  7. Common IO 使用小结
  8. Telco Customer Churn(电信客户流失相关数据集)
  9. apache设置开机启动启动
  10. 苹果计算机cpu 型号怎么看,苹果电脑型号怎么看_mac电脑怎么看型号-win7之家