Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の4_A問題をC++とPython で解いてみました。
ITP1 のトピック4では、計算について学びます。「計算式に用いられる様々な演算子を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。
問題(4_A: A / B Problem)
問題はリンク先をご覧ください。
整数の割り算と剰余、浮動小数点の割り算について紹介します。「0.00001以下の誤差があってもよいものとします」とあります。小数点以下の桁数を指定する方法も紹介します。
解答案
C++ プログラム例(ITP1 4_A)
iostream を使う方法を紹介します。fixed と setprecision で小数点以下の桁数を指定します。
#include <iostream>
#include <ios> // fixed
#include <iomanip> // setprecision
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a / b << " " << a % b << " ";
cout << fixed << setprecision(5) << (double)a / (double)b << endl;
return 0;
}
フォーマットを指定する出力をする場合、iostream よりも、Cの stdio.h を使ったほうが簡単に書ける気がします。
#include <cstdio>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d %lf.5\n", a / b, a % b, (double)a / (double)b);
return 0;
}
わたしは、簡単に書ける範囲では、iostream を使いますが、ある程度、手間がかかるようなら、stdio.h(cstdio)を使っています。
Python プログラム例(ITP1 4_A)
Python では、整数の割り算 // と浮動小数点の割り算 / 演算子で区別します。ITP1 1_D(Watch)でも解説しましたが、format メソッドを使う場合とf文字列を使う場合があります。このブログでは、f文字列で書いています。以下となります。
a, b = map(int, input().split())
print(f"{a // b} {a % b} {a / b:.5f}")
上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。
最後に
トピック4では、演算子について学べる演習を解いていきます。今回は、小数点以下の桁数を指定する出力も紹介しました。
引き続き、ITP1 の問題を紹介していきます。