hdu 1700 poj 2954
2011-04-10 00:48
363 查看
题目大意:给出一个以格子点为顶点的三角形,要求求出在此三角形里的顶点个数。
此题有直接的数学公式套用,即PICK公式,以下是该公式的相关介绍:
http://translate.google.com/translate?u=http%3A%2F%2Fepiste.math.ntu.edu.tw%2Farticles%2Fsm%2Fsm_25_10_1%2Fpage4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CN
主要是利用gcd和面积公式求解:
以下是代码:
此题有直接的数学公式套用,即PICK公式,以下是该公式的相关介绍:
http://translate.google.com/translate?u=http%3A%2F%2Fepiste.math.ntu.edu.tw%2Farticles%2Fsm%2Fsm_25_10_1%2Fpage4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CN
主要是利用gcd和面积公式求解:
以下是代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; struct point { int x,y; }; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { point a,b,c; int i,j; while(1) { int area,e,i; scanf("%d%d%d%d%d%d",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y); if(!a.x && !a.y && !b.x && !b.y && !c.x && !c.y) break; area=(b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); area=area>0?area:-area; e=gcd(abs(b.x-a.x),abs(b.y-a.y))+gcd(abs(c.x-b.x),abs(c.y-b.y))+gcd(abs(a.x-c.x),abs(a.y-c.y)); i=(area-e+2)/2; printf("%d/n",i); } return 0; }
相关文章推荐
- POJ 2954-Triangle(计算几何+皮克定理)
- HDU 2717||POJ 3278 BFS入门(理解原理)
- hdu 1312 Red and Black && POJ 1979 Red and Black
- hdu 4009 && POJ 3164
- hdu 1506/poj 2559 Largest Rectangle in a Histogram
- POJ 1004 && HDU 1064 Financial Management(水~)
- POJ 2195&&HDU 1533 Going Home(KM算法解决二分图最小权匹配)
- HDU 1116 &&POJ 1386 Play on Words(欧拉回路)
- HDU 1541+poj 2352 stars
- HDU 1520 & POJ 2342 Anniversary party(树形dp)
- 【POJ】3169 Layout & 【HDU】3592 World Exhibition 差分约束
- POJ 3346 && HDU 2416 Treasure of the Chimp Island(bfs)
- POJ 1450 && HDU 1046 Gridland(计算几何)
- HDU 1157 POJ 2388 Who's in the Middle 求中位数
- poj 1700 poj 3404
- HDU 1540 && POJ 2892 线段树 单点染色 区间查询
- Hdu 2815 Mod Tree + Poj 3243 Clever Y 扩展Baby Step Giant Step 解决离散对数问题
- HDU 1829 & POJ 2492 A Bug's Life (并查集)
- HDU 2328 POJ 3450 KMP
- Poj 3693 & Hdu 2459 Maximum repetition substring (08合肥Online 后缀数组+RMQ 重复次数最多的连续重复子串)