D - Area解题报告
来源:互联网 发布:搜狐网络大厦 编辑:程序博客网 时间:2024/04/27 15:01
这个题目主要是涉及到了精度的问题,只能用__int64;
代码1:
#include<iostream>using namespace std;__int64 move[10][2]={{0,0},{1,-1},{1,0},{1,1},{0,-1},{0,0},{0,1},{-1,-1},{-1,0},{-1,1}};__int64 Getarea(__int64 x1,__int64 x2,__int64 y1,__int64 y2){return (x1*y2-x2*y1);}int main(){int n,p;char c;__int64 x1=0,x2=0,y1,y2,area=0;cin>>n;while(n--){while((c=cin.get())!='5'){p=c-'0';x2=x1+move[p][0];y2=y1+move[p][1];area+=Getarea(x1,x2,y1,y2);x1=x2;y1=y2;}if(area<0){area=(-1)*area;}x2=area/2;if(area!=x2*2){printf("%I64d.5\n",x2);}elseprintf("%I64d\n",x2);area=0;}return 0;}
代码2:
#include<iostream>using namespace std;struct Point{ __int64 x; __int64 y;};int D[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1}};//求面积__int64 area(Point p1,Point p2){ return p1.x*p2.y-p2.x*p1.y;}int t;char ch[1000005];int main(){ int i,j; int id; int len; __int64 Area=0; scanf("%d",&t); Point p0,p1; for(i=0;i<t;++i) { p0.x=0; p0.y=0; Area=0; scanf("%s",&ch); len=strlen(ch); for(j=0;j<len-1;++j) { id=ch[j]-'0'; p1.x=p0.x+D[id][0]; p1.y=p0.y+D[id][1]; Area+=area(p1,p0); p0=p1; } if(Area<0) Area=-Area; __int64 res=Area/2; if(res*2 == Area) printf("%I64d\n",res); else printf("%I64d.5\n",res); } return 0;}
- D - Area解题报告
- D - Area解题报告(熊禾强)
- JOJ 1054: Area 解题报告
- POJ-1654 Area 解题报告
- USACO Window Area 解题报告
- LeetCode-Rectangle Area 解题报告
- D - Eqs解题报告
- 解题报告:D
- POJ-1927 Area in Triangle解题报告
- POJ 3792 Area of Polycubes 解题报告
- hdu 1071 - The area(解题报告)
- [leetcode] 223. Rectangle Area 解题报告
- [Leetcode] 223. Rectangle Area 解题报告
- Poj 1654 Area 计算面积 解题报告
- 7/21 D 解题报告
- H - Area in Triangle解题报告(熊禾强)
- POJ 1654 Area计算几何(解题报告)
- D - Eqs解题报告(黄杰)
- HTTP请求(GET与POST区别)和响应
- inote小结
- 概述, 信令点,信令转接点,链路和链路集
- 链路的类型,链路的容量,可靠性,信令点编码,路由和路由集
- java测试网络是否连通
- D - Area解题报告
- 多线程练习
- 程序员应知——把小事做好
- Javascript面向对象扩展库
- J - Transmitters解题报告
- GeekOS源代码学习(9)project1中Init_DMA与Init_Floppy
- 导读
- VB 制作网页浏览器
- 自动换行