首页 > 代码库 > POJ 1654
POJ 1654
不知 是怎么看出的精度不够,吸经验吧。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;char str[1000050];int dir[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}};struct point{ __int64 x,y;};__int64 cross(point a,point b){ return a.x*b.y-b.x*a.y;}int main(){ int t; __int64 xt,yt; __int64 ans; scanf("%d",&t); getchar(); while(t--){ scanf("%s",str); xt=yt=0; ans=0; point pre,now; pre.x=pre.y=0; for(int i=0;str[i]!=‘5‘;i++){ xt+=dir[str[i]-‘0‘][0]; yt+=dir[str[i]-‘0‘][1]; now.x=xt; now.y=yt; ans+=cross(pre,now); pre=now; } if(xt==0&&yt==0){ if(ans<0) ans=-ans; if(ans%2==0) printf("%I64d\n",ans/2); else printf("%I64d.5\n",ans/2); } else printf("0\n"); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。