LightOJ 1433-Minimum Arc Distance【几何】
2016-05-03 16:43
330 查看
1433 - Minimum Arc Distance
You all probably know how to calculate the distance between two points in two dimensional cartesian plane. But in this problem you have to find the minimum arc distance between two points and they are on a circle centered at another point.
You will be given the co-ordinates of the points A and B and co-ordinate of the center O. You just have to calculate the minimum arc distance between A and B. In the picture,
you have to calculate the length of arc ACB. You can assume that A and B will always be on the circle centered at O.
![](http://lightoj.com/data/problems/desc/1433/a.png)
Each case starts with a line containing six integers Ox, Oy, Ax, Ay, Bx, By where (Ox, Oy) indicates the co-ordinate of O, (Ax,
Ay) denote the co-ordinate of A and (Bx, By) denote the co-ordinate of B. All the integers will lie in the range [1, 10000].
PROBLEM SETTER: ARIF SIDDIQUEE
SPECIAL THANKS: JANE ALAM JAN
![]() ![]() | PDF (English) | Statistics | Forum |
Time Limit: 2 second(s) | Memory Limit: 32 MB |
You will be given the co-ordinates of the points A and B and co-ordinate of the center O. You just have to calculate the minimum arc distance between A and B. In the picture,
you have to calculate the length of arc ACB. You can assume that A and B will always be on the circle centered at O.
![](http://lightoj.com/data/problems/desc/1433/a.png)
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.Each case starts with a line containing six integers Ox, Oy, Ax, Ay, Bx, By where (Ox, Oy) indicates the co-ordinate of O, (Ax,
Ay) denote the co-ordinate of A and (Bx, By) denote the co-ordinate of B. All the integers will lie in the range [1, 10000].
Output
For each case, print the case number and the minimum arc distance. Errors less than 10-3 will be ignored.Sample Input | Output for Sample Input |
5 5711 3044 477 2186 3257 7746 3233 31 3336 1489 1775 134 453 4480 1137 6678 2395 5716 8757 2995 4807 8660 2294 5429 4439 4272 1366 8741 6820 9145 | Case 1: 6641.81699183 Case 2: 2295.92880 Case 3: 1616.690325 Case 4: 4155.64159340 Case 5: 5732.01250253 |
SPECIAL THANKS: JANE ALAM JAN
#include<stdio.h> #include<string.h> #include<cmath> #include<algorithm> using namespace std; int main() { int t,tt=0; scanf("%d",&t); while(t--) { double ox,oy,x1,y1,x2,y2; scanf("%lf%lf%lf%lf%lf%lf",&ox,&oy,&x1,&y1,&x2,&y2); printf("Case %d: ",++tt); double l1,l2; l1=sqrt((ox-x1)*(ox-x1)+(oy-y1)*(oy-y1)); l2=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); l2=(double)l2/2; double a=asin(l2/l1); a=a*2.0; printf("%.10lf\n",a*l1); } return 0; }
相关文章推荐
- 数据库中的In查询的范围
- activiti 个人任务指定办理人三种方式(十)
- win7 部署WCF遇到的问题记录
- 阿里云OSS图片云存储测试上传
- python学习第二站--列表list、tuple
- Android Loader详解
- STL之常用算法
- 基于分布式架构的大数据商业建模
- [python]CategoryTree的设计与实现
- detection/region/object proposal 方法综述文章
- 实践一:Linux基础实践
- Qt开发之信号槽机制
- CentOS安装rar及用法
- android 判断程序是首次(第一次)进入
- Volley源码分析一
- valuse()函数用法
- 在MyEclipse中集成润乾报表
- corner的编程路要开始咯~~
- 华为2016研发工程师编程题(2)----字符集和
- AJax的使用json数据的传输回调函数