pontz_rwのブログ

プログラミング等の備忘録

AOJ

ALDS1_1_A: 挿入ソート

問題 挿入ソート | アルゴリズムとデータ構造 | Aizu Online Judge ソートに関する問題 解答 問題文に記載されている挿入ソートのアルゴリズムを実装します。出力は、ソート前に 回と、各計算ステップの途中経過を 回の、合計 回行います。 C++ #include <iostream> us</iostream>…

Volume0: 0009

素数 | Aizu Online Judge 以下の素数の個数を求める問題です。 予めエラトステネスの篩を使用して素数のリストを作成しておき、各データセットに対して素数の個数を求めます。 Python # coding: utf-8 LIMIT = 999999 # 1 から LIMIT までのリスト # 素数(…

Volume0: 0008

4つの整数の和 | Aizu Online Judge 重複を許す組み合わせの数を求めます。 C++ を より求めることで、forループが三重で済みます。 #include <iostream> using namespace std; int n; int main() { while (cin >> n) { int count = 0; for (int a = 0; a <= 9; ++a) </iostream>…

Volume0: 0007

借金地獄 | Aizu Online Judge 以下の操作を 回繰り返せば良いです。 借金に利子を加える 1000未満を切り上げ C++ 借金の計算は以下の通りです。 借金に金利を加える 1000未満を切り上げするために、999を加える 1000で割って千の位未満の桁を飛ばす 1000を…

Volume0: 0006

文字列を逆順に出力 | Aizu Online Judge 文字列を逆順にする問題です。 文字列は文字の配列で表現されているので、配列を後ろから操作すれば良いです。 ただし、ほとんどの言語において、関数reverseで文字列を逆順にすることができます。 C++ 配列を後ろか…

Volume0: 0005

最大公約数と最小公倍数 | Aizu Online Judge 最大公約数と最小公倍数を求める問題です。 整数 に対して、最大公約数 と は、 という関係があります。 最大公約数は、ユークリッドの互除法を使って求めることができます。 C++ #include <iostream> using namespace std</iostream>…

Volume0: 0004

連立方程式 | Aizu Online Judge 連立方程式の解を求める問題です クラーメルの公式を利用します Python # coding: utf-8 while True: try: a, b, c, d, e, f = [int(i) for i in input().split()] detA = a * e - b * d detA1 = c * e - b * f detA2 = a * …

Volume0: 0003

正三角形 | Aizu Online Judge 三平方の定理を利用します 直角三角形の斜辺 と他の 辺 との関係は、 です C++ #include <iostream> using namespace std; int a, b, c, n; int main() { cin >> n; for (int i = 0; i < n; ++i) { cin >> a >> b >> c; // cを斜辺にする</iostream>…

Volume0: 0002

桁数 | Aizu Online Judge 数値の桁数を求める問題 解答 整数の桁数を求めるので、文字列に変換し、文字列の長さを求めれば良い while True: try: # 入力から2つの整数を受け取る a, b = [int(i) for i in input().split()] # 2つの整数を足し、文字列に変換…

Volume0: 0001

山の高さ | Aizu Online Judge ソートに関する問題 解答 リストを降順に並べ替えて、上から3つ切り出せば良い # 山の高さ10個のデータ mountains = [int(input()) for _ in range(10)] # 山の高さが高い順に3件分、ループで取り出す for height in sorted(mo…

Volume0: 0000

九九 | Aizu Online Judge 九九を出力する問題 解答 二重ループを利用する # 掛けられる数 i for i in range(1, 10): # 掛ける数 j for j in range(1, 10): # 九九を出力 print(f'{i}x{j}={i * j}') 一行で書く [print(f'{i}x{j}={i * j}') for i in range(1…

ITP1_10_D: Distance II

ミンコフスキー距離 | プログラミング入門 | Aizu Online Judge 数学に関する問題 解答 問題文で与えられた数式をコードにしていきます。 まず、xとyの距離をそれぞれ計算します。 次に、求めた距離をそれぞれp乗し、その合計を求めます。 そして、求めた合…

ITP1_10_C: Standard Deviation

標準偏差 | プログラミング入門 | Aizu Online Judge 数学に関する問題 解答1 問題文で与えられた数式をコードにしていきます。 # coding: utf-8 while True: n = int(input()) if n == 0: break s = list(map(float, input().split())) m = sum(s) / n a_2 …

ITP1_10_B: Triangle

三角形 | プログラミング入門 | Aizu Online Judge 数学に関する問題 三角形の面積 は、 $$ S = \frac{1}{2}ab\sin{C} $$ 辺 の長さは、 より、 $$ c = \sqrt{a^{2} + b^{2} - 2ab \cos{C}} $$ 高さ は、 より、 $$ h = \frac{2S}{a} $$ 解答 # coding: utf-…

ITP1_10_A: Distance

距離 | プログラミング入門 | Aizu Online Judge 2点間の距離を求める問題 2点間の距離は、 で求めることができます。 解答 # coding: utf-8 x1, y1, x2, y2 = map(float, input().split()) print(((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5)

ITP1_9_D: Transformation

文字列変換 | プログラミング入門 | Aizu Online Judge 文字列操作に関する問題 解答 入力値を分割する際の要素数や、文字列操作する際のインデックスに注意します。 # coding: utf-8 str = input() q = int(input()) for _ in range(q): line = input().spl…

ITP1_9_C: Card Game

カードゲーム | プログラミング入門 | Aizu Online Judge 解答 # coding: utf-8 n = int(input()) t = 0 h = 0 for _ in range(n): tc, hc = input().split() if tc > hc: t += 3 elif tc < hc: h += 3 else: t += 1 h += 1 print(t, h)

ITP1_9_B: Shuffle

シャッフル | プログラミング入門 | Aizu Online Judge 文字列の切り取り、結合に関する問題 解答 インデックスに気を付けて文字列を操作します。 # coding: utf-8 while True: cards = input() if cards == '-': break m = int(input()) for i in range(m):…

ITP1_9_A: Finding a Word

単語の検索 | プログラミング入門 | Aizu Online Judge 指定された単語の数を出力する問題 解答 count()を使用することで、リスト内の指定の値を持つ要素の数を取得することができます。 # coding: utf-8 count = 0 W = input().lower() while True: T = inp…

ITP1_8_D: Ring

リング | プログラミング入門 | Aizu Online Judge 指定した文字列が含まれるかどうか判定する問題 解答1. 入力値を2倍 入力値と同じ内容の文字列を加えます。 inを使用し、文字列に指定した値があるかどうかを調べます。 # coding: utf-8 s = input() p = i…

ITP1_8_C: Counting Characters

文字のカウント | プログラミング入門 | Aizu Online Judge アルファベットの数を数える問題 解答 まずアルファベットのaからzまでを含んだ文字列を用意します。 入力値は、終了条件が指定されていないため、例外をキャッチしたタイミングで入力値を受け取る…

ITP1_8_B: Sum of Numbers

数字の和 | プログラミング入門 | Aizu Online Judge 文字列操作に関する問題 1. 入力を文字列として受け取った場合 map()を使用し、受け取った文字列を1文字ずつ整数型に変換し、その合計を出力します。 # coding: utf-8 while True: line = input() if lin…

ITP1_8_A: Toggling Cases

小文字と大文字の変換 | プログラミング入門 | Aizu Online Judge 文字列操作に関する問題 1. swapcase()を使う場合 swapcase()を使用することで、大文字を小文字に、小文字を大文字に変換することができます。 print(input().swapcase()) 2. islower()、も…

ITP1_7_D: Matrix Multiplication

行列の積 | プログラミング入門 | Aizu Online Judge 行列, の積を求める問題 行列の各要素は行列の行目の各要素と、行列の列目の各要素の積を合計したものです。 行列の行列を入れ替えた転置行列を用意すれば、行同士の演算で行列が求められます。 行列, を…

ITP1_7_C: Spreadsheet

表計算 | プログラミング入門 | Aizu Online Judge 行列に関する問題 はじめに、r × c の表を作成します。 次に、各行の合計をappend()を使用してmatrixの各行の最後に結合し、 r × (c + 1) の表を作成します。 そして、各列の合計をzip()を使用して、matrix…

ITP1_7_B: How many ways?

組み合わせの数 | プログラミング入門 | Aizu Online Judge] 組み合わせの数を求める問題 選ぶ3つの数をa, b, c (a < b < c) とすると、以下の条件を満たします。 aは合計値xを3で割った数より小さい (a < x / 3) bは、合計値xからaを引いた数を2で割った数…

ITP1_7_A: Grading

成績の判定 | プログラミング入門 | Aizu Online Judge 複数の条件分岐がある問題 条件分岐の順番に気を付ければ溶ける問題です。 解答 while True: m, f, r = map(int, input().split()) score = m + f if m == f == r == -1: break elif m == -1 or f == -…

ITP1_6_D: Matrix Vector Multiplication

行列とベクトルの積 | プログラミング入門 | Aizu Online Judge ベクトルと行列の積についての問題 この式に沿って問題を解いていきます。 解答1 n, m = map(int, input().split()) A = [] b = [] # 行列Aに要素を追加 for i in range(n): A.append([int(s) …

ITP1_6_C: Official House

公舎 | プログラミング入門 | Aizu Online Judge 配列に関する問題 多次元配列を利用します。 解答 houses = [[[0 for r in range(10)] for f in range(3)] for b in range(4)] n = int(input()) for i in range(n): b, f, r, v = map(int, input().split())…

ITP1_6_B: Finding Missing Cards

なくなったカードの発見 | プログラミング入門 | Aizu Online Judge 不足しているカードを指定された順序で表示する問題 トランプのリストを用意しておき、指定されたカードをフラグで管理するか、取り除くかします。 解答1 # トランプの生成 cards = [ "{} …