AIZU ONLINE JUDGE

AOJ ITP1 4_A(A / B Problem)を解く

AOJ_ITP1_4_A

Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の4_A問題をC++とPython で解いてみました。

ITP1 のトピック4では、計算について学びます。「計算式に用いられる様々な演算子を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。

問題(4_A: A / B Problem)

問題はリンク先をご覧ください。

AOJ ITP1 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 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA