您的位置:首页 > 其它

Area

2013-07-29 10:52 29 查看
http://poj.org/problem?id=1265

#include<cstdio>
#include<istream>
#include<algorithm>
#include<cmath>
int n;
using namespace std;
const int maxn=100;
const double pi=acos(-1.0);
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
struct Point  //点的定义
{
double x,y;
Point() {}
Point (double a,double b):x(a),y(b) {}
};
Point a[maxn],b[maxn];
double del(const Point &a,const Point &b)
{
return(a.x*b.y-a.y*b.x);
}
int main()
{
int t,c=0;

scanf("%d",&t);
while(t--)
{
c++;
scanf("%d",&n);
int xx=0,yy=0,x,y,num=0;
for(int i=0; i<n; i++){
scanf("%d%d",&x,&y);
num+=gcd(abs(x),abs(y));
b[i+1].x=xx+x;
b[i+1].y=yy+y;
xx=b[i+1].x;
yy=b[i+1].y;
}
double sum=0;
b[0].x=0;
b[0].y=0;
for(int i=0; i<n; i++)
sum+=del(b[i],b[i+1]);
printf("Scenario #%d:\n",c);
printf("%d %d %.1lf\n",int(sum/2.0)+1-(num/2),num,sum/2);
printf("\n");
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: