📄 1517.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1517 on 2005-12-14 at 20:47:48 */
#include <cstdio>
#include <cmath>
const int L_MAX = 128;
const double ERATH_R = 6378;
const double eps = 1e-7;
class Point {
public:
double x, y, z;
char name[L_MAX];
void parse(double, double, double);
double dist(const Point&) const;
};
void Point::parse(double lon, double lat, double h = ERATH_R) {
double a = lon * M_PI / 180;
double b = lat * M_PI / 180;
x = h * cos(a) * cos(b);
y = h * sin(a) * cos(b);
z = h * sin(b);
}
double Point::dist(const Point& p) const {
return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
}
const Point CENTER = { 0.0, 0.0, 0.0 };
int main()
{
Point city, sate;
int n, i, t;
double lon, lat, h;
for(t = 1; scanf("%d %lf %lf %lf", &n, &lat, &lon, &h) != EOF && n != 0; t++) {
sate.parse(lon, lat, h+ERATH_R);
printf("Test case %d:\n", t);
for(i = 0; i < n; i++) {
scanf("%s %lf %lf", city.name, &lat, &lon);
city.parse(lon, lat);
if(sate.dist(city)+city.dist(CENTER) -
sate.dist(CENTER) < eps) {
printf("%s\n", city.name);
}
}
putchar('\n');
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -