Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の10_A問題をC++とPython で解いてみました。
ITP1 のトピック10では、数学関数について学びます。「基礎的な数学関数を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。
問題(10_A: Distance)
問題はリンク先をご覧ください。
浮動小数点を使って2点間の距離を求める問題です。
解答案
C++ プログラム例(ITP1 10_A)
2点間の距離は、中学数学で履修しますが、以下の式で求めることができます。
$$\sqrt{(x1 \;-\; x2)^2 + (y1 \;-\; y2)^2}$$
C の標準ライブラリ math.h(cmath)をインクルードして、sqrt 関数を使います。iostream で、浮動小数点を出力する方法は、4_A で紹介しました。
以下は、C++ の解答案となります。
#include <iostream>
#include <ios> // fixed
#include <iomanip> // setprecision
#include <cmath>
using namespace std;
int main()
{
double x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
cout << fixed << setprecision(5) << sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)) << endl;
return 0;
}
Python プログラム例(ITP1 10_A)
Python では、math モジュールを import して math.sqrt を使います。浮動小数点の出力方法は、4_A で紹介したf文字列を使いました。
import math
x1, y1, x2, y2 = map(float, input().split())
print(f"{math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2):.5f}")
上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。
最後に
トピック10では、数学関数について学びます。数学関数を使う場合、C++ では、math.h をインクルードして、Python では、math モジュールを import します。
引き続き、ITP1 の問題を紹介していきます。