poj 2954
来源:互联网 发布:软件开发面试自我介绍 编辑:程序博客网 时间:2024/05/16 19:37
题目概述
直角坐标系中,给定一个三角形的三个顶点坐标,求其内部格点(横纵坐标皆为整数的点)数,顶点和在边上的格点不计
时限
1000ms/3000ms
输入
每行六个整数,分表描述三个顶点的坐标,输入以六个0结束
限制
所有数字绝对值<=15000
输出
每行一个数,为所求内部格点数
样例输入
0 0 1 0 0 1
0 0 5 0 0 5
0 0 0 0 0 0
样例输出
0
6
讨论
计算几何,pick公式应用,和刚刚做的poj 1265几乎一致(甚至更简单),pick公式为A=I+E/2-1,其中A为面积,I为内部格点数,E为边上格点数,先求出三角形的面积,然后利用gcd求出边上格点数,最后算出内部格点数
题解状态
168K,0MS,C++,1135B
题解代码
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define INF 0x3f3f3f3f #define MAXN 10003#define memset0(a) memset(a,0,sizeof(a))#define EPS 1e-6int gcd(int a, int b){ while (b) { int c = a%b; a = b; b = c; } return a;}int xp(int x1, int y1, int x2, int y2, int x3, int y3){ return (x1 - x2)*(y3 - y2) - (y1 - y2)*(x3 - x2);}int fun(int x1, int y1, int x2, int y2, int x3, int y3){ int A = abs(xp(x1, y1, x2, y2, x3, y3));//求出三角形面积 int E = 0;//初始化边上格点数 下面计算每条边上的格点数 if ((x1 - x2) && (y1 - y2)) E += gcd(abs(x1 - x2), abs(y1 - y2)); else E += abs(x1 - x2) + abs(y1 - y2); if ((x2 - x3) && (y2 - y3)) E += gcd(abs(x2 - x3), abs(y2 - y3)); else E += abs(x2 - x3) + abs(y2 - y3); if ((x3 - x1) && (y3 - y1)) E += gcd(abs(x3 - x1), abs(y3 - y1)); else E += abs(x3 - x1) + abs(y3 - y1); return (A + 2 - E) / 2;//利用pick公式得到内部格点数}int main(void){ //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); int x1, y1, x2, y2, x3, y3;//在math.h中有名为y1和y0的两个函数 故不能作为全局变量 while (scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3) && (x1 || y1 || x2 || y2 || x3 || y3))//input printf("%d\n", fun(x1, y1, x2, y2, x3, y3));//output}
EOF
0 0
- poj 2954
- poj 2954
- poj 2954
- POJ 2954
- poj 2954
- poj 2954 Triangle
- hdu 1700 poj 2954
- poj 2954 Triangle
- POJ 2954解题报告
- POJ 2954(Pick公式)
- POJ 2954 pick公式
- poj 2954 pick定理
- poj 2954 pick定理
- POJ 2954 Triangle
- POJ 2954 pick定理
- 【POJ 2954】 Triangle
- poj 2954 Triangle
- poj 2954(pick定理)
- (OK)(OK) mptcp_android-x86-kernel-4.4.12.txt
- 字节序大小端
- 华为、酷派手机logcat不输出日志解决方案
- 最长重复子串
- 汇编语言(王爽)实验十 编写子程序
- poj 2954
- svn分支以及eclipse上的svn插件
- [安装配置][Win10]Qt提示“调试器未设置”错误
- 死锁的预防与避免
- python文件I/O
- Win10引发的 wamp集成包启动不了
- 高可用(负载均衡)MYSQL(读写分离,主从切换)
- PhpExcel中文帮助手册|PhpExcel使用方法
- vim配置及插件安装管理(超级详细)