【ACM】杭電OJ 2036(待更)
阿新 • • 發佈:2018-11-25
AC程式碼
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <set> #include <algorithm> using namespace std; const int maxn = 105; double a[maxn][3]; int main () { int n,i; double s; while(scanf("%d",&n)==1 && n) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%lf%lf",&a[i][1],&a[i][2]); s=0; for(i=1;i<=n;i++) { if(i==n) { s+=fabs(a[n][1]*a[1][2]-a[1][1]*a[n][2]); } else s+=fabs(a[i][1]*a[i+1][2]-a[i+1][1]*a[i][2]); } printf("%.1lf\n",s/2.0); } return 0; }
WA程式碼
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <set> #include <algorithm> using namespace std; const int maxn = 105; double a[maxn][3]; int main () { int n,i; double s,d1,d2,d3,cos,sin; while(scanf("%d",&n)==1 && n) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%lf%lf",&a[i][1],&a[i][2]); s=0; for(i=1;i<n-1;i++) { d1=sqrt((a[1][1]-a[i+1][1])*(a[1][1]-a[i+1][1])+(a[1][2]-a[i+1][2])*(a[1][2]-a[i+1][2])); d2=sqrt((a[1][1]-a[i+2][1])*(a[1][1]-a[i+2][1])+(a[1][2]-a[i+2][2])*(a[1][2]-a[i+2][2])); d3=sqrt((a[i+1][1]-a[i+2][1])*(a[i+1][1]-a[i+2][1])+(a[i+1][2]-a[i+2][2])*(a[i+1][2]-a[i+2][2])); cos=(d1*d1+d2*d2-d3*d3)/(2.0*d1*d2); sin=sqrt(1-cos*cos); s+=1.0/2*d1*d2*sin; } printf("%.1lf\n",s); } return 0; }