标签:with ons between freopen title pos scanf recommend scan
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1700
题目:
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2523 Accepted Submission(s): 972
思路:
直接猜是等边三角形,然后发现确实是。
求其他两个点,直接旋转就行了。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <algorithm> 5 6 7 using namespace std; 8 const double PI = acos(-1.0); 9 const double eps = 5e-4; 10 11 /****************常用函数***************/ 12 //判断ta与tb的大小关系 13 int sgn( double ta, double tb) 14 { 15 if(fabs(ta-tb)<eps)return 0; 16 if(ta<tb) return -1; 17 return 1; 18 } 19 20 //点 21 class Point 22 { 23 public: 24 25 double x, y; 26 27 Point(){} 28 Point( double tx, double ty){ x = tx, y = ty;} 29 30 }; 31 //两点间距离 32 double getdis(const Point &st,const Point &se) 33 { 34 return sqrt((st.x - se.x) * (st.x - se.x) + (st.y - se.y) * (st.y - se.y)); 35 } 36 37 int main(void) 38 { 39 //freopen("in.acm","r",stdin); 40 int t; 41 scanf("%d",&t); 42 Point pa,pb,pc,pp=Point(0,0); 43 while(t--) 44 { 45 scanf("%lf%lf",&pa.x,&pa.y); 46 double r = getdis(pa,pp); 47 double ag = atan2(pa.y,pa.x); 48 pb.x = r * cos(ag + PI * 2 / 3), pb.y = r * sin(ag + PI * 2 / 3); 49 pc.x = r * cos(ag - PI * 2 / 3), pc.y = r * sin(ag - PI * 2 / 3); 50 if(sgn(pb.y,pc.y)>0||(sgn(pb.y,pc.y)==0&&sgn(pb.x,pc.x)>0)) 51 swap(pb,pc); 52 printf("%.3f %.3f %.3f %.3f\n",pb.x,pb.y,pc.x,pc.y); 53 } 54 return 0; 55 }
标签:with ons between freopen title pos scanf recommend scan
原文地址:http://www.cnblogs.com/weeping/p/7656195.html