计算多边形面积的通式
/* 不规则多边形的计算 通过容斥三角形得到答案 */ #include<cstdio> #include<cstring> #define ll long long using namespace std; const int N=1e6+50; char s[N]; int main() { int T,n;scanf("%d",&T);while(T--) { scanf("%s",s+1); n=strlen(s+1); ll x=0,y=0,xx=0,yy=0,ans=0; for(int i=1;i<=n;i++) { if(s[i]==‘1‘) --x,--y; else if(s[i]==‘2‘) --x; else if(s[i]==‘3‘) --x,++y; else if(s[i]==‘4‘) --y; else if(s[i]==‘5‘) break; else if(s[i]==‘6‘) ++y; else if(s[i]==‘7‘) ++x,--y; else if(s[i]==‘8‘) ++x; else if(s[i]==‘9‘) ++x,++y; ans+=(x*yy-y*xx); xx=x,yy=y; } if(ans<0) ans=-ans; printf("%lld",ans/2); if(ans%2) printf(".5"); printf("\n"); } return 0; }
原文地址:https://www.cnblogs.com/lxy8584099/p/10420771.html
时间: 2024-11-05 12:30:55