AOJ 0177 - Distance Between Two Cities
sin,cos,tanは弧度法で指定しないといけないことで数分悩んだ.
#include<iostream> #include<cmath> double toDegree(double a){ return M_PI / 180 * a; } int main(){ const double R = 6378.1; double a, b, c, d; while(std::cin >> a >> b >> c >> d, a != -1){ //弧度法に変換 a = toDegree(a); b = toDegree(b); c = toDegree(c); d = toDegree(d); double delta_x = d-b, dist = R*acos(sin(a)*sin(c)+cos(a)*cos(c)*cos(delta_x)); std::cout << static_cast<int>(dist+0.5) << std::endl; } }