POJ_1654_Area

//计算几何,求多边形的面积 ///这题精度要求比较大,将多边形拆成一个个三角形,利用向量法求三角形的面积,可以先求 //平行四边形的面积,最后统一除以二得多边形面积。注意按坐标法,面积有可能为负,因为坐标 //法对顺时针和逆时针结果不同,所以最后需要取正。坐标法对处理凹多边形的面积同样奏效。 #include<stdio.h> #include<string.h> #include<math.h> //使用64位的整型_int64,也可以用longlong来表示,输出时用I64d和lld __int64 x,y; __int64 di[10][2]={0,0,1,-1,1,0,1,1,0,-1,0,0,0,1,-1,-1,-1,0,-1,1}; char s[1000005]; int main() { int t; scanf("%d",&t); while(t--) { x=0;y=0; int last; __int64 area=0; __int64 lastx=0,lasty=0; scanf("%s",s); int i,len=strlen(s); for(i=0;i<len;i++) { int num=s[i]-'0'; if(num==5) break; x+=di[num][0]; y+=di[num][1]; area+=x*lasty-lastx*y; lastx=x;lasty=y; } if(area<0)area=(-1)*area; if(area/2*2==area) printf("%I64d/n",area/2); else printf("%I64d.5/n",area/2); } return 0; }

你可能感兴趣的:(POJ_1654_Area)