zoj1032 Area 2

原创 2006年06月16日 13:35:00
  1. //zoj1032 Area 2
  2. //Accepted 1032 C++ 00:00.00 392K 
  3. #include <stdio.h>
  4. #define MAXN 100
  5.  
  6. struct point{ double x,y;};
  7.  
  8. double xmult(double x1,double y1,double x2,double y2){ return (x1*y2-y1*x2);}
  9. int gcd(int a,int b) { return b?gcd(b,a%b):a;}
  10. int abs(int x) { return x>0?x:(0-x);}
  11.  
  12. double area_polygon(int n, point *p)
  13. {
  14.        int i;
  15.        double ret=0;
  16.        for (i=0; i<n; ++i)
  17.               ret += xmult(p[i].x,p[i].y,p[i+1].x,p[i+1].y);
  18.        ret += xmult(p[n-1].x,p[n-1].y,p[0].x,p[0].y);
  19.        return ret/2;
  20. }
  21.  
  22. void solve()
  23. {
  24.        int i,n;
  25.        point p[MAXN+1];
  26.        int c,e;
  27.        double a;
  28.        int dx,dy;
  29.        scanf ("%d",&n);
  30.        p[0].x = p[0].y = 0;
  31.        e = 0;
  32.        for (i=0; i<n; ++i){
  33.               scanf ("%d %d",&dx,&dy);
  34.               e += gcd(abs(dx),abs(dy));
  35.               p[i+1].x = p[i].x+dx;
  36.               p[i+1].y = p[i].y+dy;
  37.        }
  38.        a = area_polygon(n+1,p);
  39.        c = (int)(a+1-0.5*(double)e);
  40.        printf ("%d %d %.1lf/n/n",c,e,a);
  41. }
  42.  
  43. int main()
  44. {
  45. #ifdef ONLINE_JUDGE
  46. #else
  47.        freopen("1032.txt","r",stdin);
  48. #endif
  49.        int i,t;
  50.        while (scanf ("%d",&t) != EOF)
  51.               for (i=1; i<=t; ++i){
  52.                      printf ("Scenario #%d:/n",i);
  53.                      solve();
  54.               }
  55. #ifdef ONLINE_JUDGE
  56. #else
  57.        fclose(stdin);
  58. #endif
  59.        return 0;
  60. }

相关文章推荐

poj 1032 && zoj 1265 Area

#include #include #include #include using namespace std; #define N 102 struct point { double x; ...

九度OJ—题目1032:ZOJ

题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。 输入: 题目包含多组用例,每组用例占一行,...

九度OJ-题目1032 ZOJ

题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。 输入: 题目包含多组用例,每组用例占一行,包含ZO...

zoj 1439 Area Ratio

/* 数学题 套公式就行 */ #define LOCAL #include #include #include #include #include #include #include #includ...

ZOJ 1010 Area(判定线段是否构成多边形)

ZOJ 1010 Area(判定线段是否构成多边形) http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1010 题意: ...

zoj 1010 Area【线段相交问题】

ACM 计算几何 线段相交问题

ZOJ--1010:Area(线段判交问题)

Area Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Jerry, a middle...
  • yf224
  • yf224
  • 2017年06月19日 19:11
  • 130

ZOJ 1010 Area (判线段相交,简单多边形的面积)

首先要判断出不合法的多边形(impossible),即与非邻边有交点的多边形,或者n 第二就是计算简单多边形面积,计算方法就是计算每点和左右点对X轴的三角形面积(输入点要按逆时针排列,否则计算结果为...

POJ 2546 & ZOJ 1597 Circular Area(求两圆相交的面积 模板)

POJ 2546 & ZOJ 1597 Circular Area(求两圆相交的面积 模板)

zoj 1010 Area (求面积 叉积)

 Jerry, a middle school student, addicts himself to mathematical research. Maybe the problems he has...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zoj1032 Area 2
举报原因:
原因补充:

(最多只允许输入30个字)