求多边形面积,用到相邻两点叉积求多边形面积。
#include <iostream> #include<cstdio> using namespace std; char s[1000005]; int stepx[10]= {0,-1,0,1,-1,0,1,-1,0,1}, stepy[10]= {0,-1,-1,-1,0,0,0,1,1,1}; int main() { int x,y,x1,y1,t; scanf("%d",&t); while(t--) { scanf("%s",s); long long ans=0; x=y=0; for(int i=0; s[i]!='5'; i++) { x1=x+stepx[s[i]-'0']; y1=y+stepy[s[i]-'0']; ans+=x1*y-y1*x; x=x1,y=y1; } ans=ans<0?-ans:ans; if(ans&1) printf("%lld.5\n",ans/2); else printf("%lld\n",ans/2); } return 0; }