解题思路:面积想相消法,比如东北指向的线段的两端点和原点柱组成的三角形利用公式x1*y2-x2*y1则此面积为负,若为西北指向,则面积为负,此方法的好处是消去多余计算
面积
解题代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
char str[1000005];
int tmp(int x1,int y1,int x2,int y2)
{
return (x1*y2-x2*y1);
}
int main()
{
int xall[10]={0,-1,0,1,-1,0,1,-1,0,1};
int yall[10]={0,-1,-1,-1,0,0,0,1,1,1};
int t;
scanf("%d",&t);
getchar();
while(t--)
{
gets(str);
int x1,y1,x2,y2;
__int64 area=0;
x1=0;
y1=0;
int len=strlen(str);
for(int i=0;i<len;i++)
{
int j=str[i]-'0';
x2=xall[str[i]-'0']+x1;
y2=yall[str[i]-'0']+y1;
area+=tmp(x1,y1,x2,y2);
x1=x2;
y1=y2;
}
if(area<0) area=-area;
if(area%2==0) printf("%I64d\n",area/2);
else printf("%I64d.5\n",area/2);
}
return 0;
}