POJ 1654 Area
这道题一咋看好简单,就是多边形求面积嘛,但是Wrong了很多次,看看discuss才知道用double有精度问题要用long long 或__int64,这就不明白了.不过换成long long之后就过了。不过有的人在纠结开数组的问题,这个问题不是问题。
贴贴代码把:
#include<iostream> #include<cmath> using namespace std; int d[10][2]={{0,0}, {-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}};//方向 char str[1000005]; int len; int Cross(int x1,int y1,int x2,int y2) { return x1*y2-x2*y1; } int main() { int t,p,x,y,i; long long sum; cin>>t; while( t--){ cin>>str; if( str[0]=='5'){ cout<<0<<endl; continue; } len=strlen(str); x=d[str[0]-'0'][0]; y=d[str[0]-'0'][1]; sum=0; for( i=1; str[i]!='5'; i++){ p=str[i]-'0'; sum+=Cross(x,y,x+d[p][0],y+d[p][1]); x+=d[p][0]; y+=d[p][1]; } if( sum<0) //叉乘求出有向面积 sum=-sum; cout<<sum/2; if( sum%2) cout<<".5"; cout<<endl; } }
posted on 2012-07-15 21:35 java课程设计例子 阅读(247) 评论(0) 编辑 收藏 举报