POJ 2354 求球面两点距离

题意:给出球面上两点经纬度,计算球面两点距离。输入输出比较恶心。

公式题 直接上公式就能A。

#include<cmath>
#include<cstdio>
#include<iostream>
using namespace std;
double a1,b1,a2,b2,d,r=6875/2.0;
char s[99];
double Dis3D(double a1,double b1,double a2,double b2)
{
    return r*acos(sin(a1)*sin(a2)+cos(a1)*cos(a2)*cos(b1-b2));
}
int Get()
{
    int a=0;
    char c;
    while((c=getchar())<'0'||c>'9');
    for(;c>='0'&&c<='9';c=getchar())a=a*10+c-'0';
    return a;
}
void GetA(double &a)
{
    a=Get()+Get()/60.0+Get()/3600.0;
    scanf("%s",s);
    if(s[0]=='S'||s[0]=='W')a=-a;
    a=a*acos(-1.0)/180;
}
int main()
{
    while(gets(s),s[0]!='=')
    {
        GetA(a1),GetA(a1),GetA(b1),GetA(a2),GetA(b2);
        d=Dis3D(a1,b1,a2,b2);
        printf("The distance to the iceberg: %.2lf miles.\n",d);
        if(floor(d+0.005)<100)puts("DANGER!");
        gets(s);
    }
    return 0;
}  
时间: 2024-12-29 10:10:24

POJ 2354 求球面两点距离的相关文章

POJ 3407 求球面距离

题意:给出球面上两点的经纬度,注意分跟秒进制是60进制的,让求球面上的两点距离. 有公式  r*acos(sin(a1)*sin(a2)+cos(a1)*cos(a2)*cos(b1-b2)) . #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; double Dis3D(d

【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2.使用该坐标进行反地址解析: 3.坐标附近全部POI的查询: 4.计算两点间的距离. ------------------------------------------------------------------------------ 最终画面效果图   百度地图API常用两种坐标系,一是球面

HDU 4741 空间几何求两直线距离最近点

给出两直线经过的两点,没有平行的情况,求两直线最短距离和最短距离的两点. #include <iostream> #include <string.h> #include <stdio.h> #include <math.h> using namespace std; const double eps = 1e-8; //三维空间点 struct Point { double x, y, z; Point(double x=0,double y=0,doub

已知两个点的坐标,求它们的距离,请问编程怎么实现?是windows phone

问题描述 已知两个点的坐标,求它们的距离,请问编程怎么实现?是windows phone 已知两个点的坐标,求它们的距离,请问编程怎么实现?是windows phone 解决方案 http://blog.163.com/gobby_1110/blog/static/29281715201271745123282/ 解决方案二: 套用数学求两个点的距离的数学公式有那么难吗 解决方案三: 把两个点想象到坐标轴上,点A和点B 如果X相等,则AB距离是Y相减 如果Y相等,则AB距离是X相减 如果X相等,

两点距离

两点距离 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离. 输入 第一行输入一个整数n(0<n<=1000),表示有n组测试数据; 随后每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开. 输出 对于每组输入数据,输出一行,结果保留两位小数. 样例输入 2 0 0 0 1 0 1 1 0 样例输出 1.00 1.4

java经纬度两点距离计算方法

java经纬度两点距离计算方法,返回单位米: public class Distance { private static CLogger<Distance> logger = new CLogger<Distance>(); /** * 计算地球上任意两点(经纬度)距离 * * @param long1 第一点经度 * @param lat1 第一点纬度 * @param long2 第二点经度 * @param lat2 第二点纬度 * @return 返回距离 单位:米 */

POJ 1329 求三角形外接圆

题意给出三角形三点坐标让求出该三角形的外接圆标准方程和一般方程. 这题输出很恶心,注意0.000的时候要输出并且前面的符号为" + ",那么外接圆的半径r通过S=(a*b*c)/(4*r)可以求出r=(a*b*c)/(4*S),然后外心坐标是三边垂直平分线的交点,求出两个垂直平分线方程然后可以得出交点坐标. #include <iostream> #include<cstdio> #include<cstring> #include<algor

POJ 3348 求凸包面积

题意给出n个点求凸包,然后求出凸包面积就可以. 模板题求出凸包后用叉积求出面积就可以了. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; typedef int PointType; struct point { PointType x,y; int num; }; poi

POJ 2451 求半面交

题意:求半面想交后的面积,题目数据较大,使用o(n*logn)算法. 这题WA两次忘了m<3的情况,不应该啊= = . #include<cmath> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int mm=20005; typedef double DIY; struct point { DIY x,y; point() {}