AOJ

The Number of Participants

AOJ

参加者数 The Number of Participants | Aizu Online Judge 解き方 各部門の参加者を足すだけ。 コードの説明 入力を空白区切りで分割してリストにする。mapを使いリストの要素を整数に変換してからsum()で要素を足して参加者の総数を求める。 ソースコード …

Rock, Paper, Scissors

AOJ

じゃんけん Rock, Paper, Scissors | Aizu Online Judge 解き方 5人のじゃんけんの手を入力順にリストに入れる。今回は勝敗の出力は引き分けと勝ち負けの2通りに分けて考えています。 はじめにじゃんけんの結果が引き分けの場合を考える。引き分けだとじゃ…

English Sentence

AOJ

英語の文章 問題ページ 解き方 与えられた文字列を単語に分割し、最も出現頻度が高い単語と、最も文字数が多い単語を見つける。 コードの説明 出現頻度はcollectionsのCounter、文字数については組み込み関数のmax()を使う。どちらも標準で入っている。 inpu…

AOJまとめ

AOJ

Vol. 0-3 Volume0 Vol. 10, 15, 30 Volume10 Vol. 11-13, 16 Volume12 Vol. 20-28 Volume21 Vol. 0-3 Volume0 www.pytry3g.com Vol. 10, 15, 30 Volume10 www.pytry3g.com Vol. 11-13, 16 Volume12 www.pytry3g.com Vol. 20-28 Volume21 www.pytry3g.com

Palindrome

AOJ

回文 回文 | Aizu Online Judge 解き方 回文をカウントする変数を用意する。文字列が与えられたら、それが対称かどうか確認し回文ならカウントする変数に1を足す。 コードの説明 文字列が回文かどうか確認するにはスライス記法を使って確認している。 ソー…

Calculation of Area

AOJ

坪面積の計算 土地面積 | Aizu Online Judge 解き方 受け取った入力 a, bを掛けてから1坪=3.305785 [m2] で割ると坪面積が求まる。 ソースコード a, b = map(int, input().split()) print((a*b) / 3.305785)

Secret Number

AOJ

暗証番号 問題ページ 解き方 与えられた入力は半角英数字、記号、空白を含む文字列になっているので、そこから数字を見つけて取り出す。取り出しかたは色々あると思うが、今回は正規表現を使って数字を取り出して文字列から数値に変換し、それらを足していき…

Volume12

AOJ

1200: Goldbach's Conjecture 解答例

Volume21

AOJ

2100: Saizo 解答例

1616: Taro's Shopping

AOJ

太郎君の買い物 問題ページ① 問題ページ② 解き方 (※この解き方はあまり効率がよくありません。) はじめに、全商品の価格表を受け取ったらソートする。次に二分探索でソートした価格表から最大の金額mに最も近い価格を探し出してそのインデックスを取得す…

0337: Japanese Calendar

AOJ

日本の暦 問題ページ① 問題ページ② 解き方 与えられる暦の種類から西暦または和暦に変換する。 ちなみに、日本の暦は以下の通り。 明治時代 (1868年 ~ 1912年) 大正時代 (1912年 ~ 1926年) 昭和時代 (1926年 ~ 1989年) 平成時代 (1989年 ~ 2019年) …

2259: Programming Contest

AOJ

問題A:プログラミングコンテスト 問題ページ① 問題ページ② 解き方 各参加者の解いた問題数を求めて、最も多く問題を解いている人の解いた問題数を出力するだけ。 コードの説明 解いた問題数を求めればいいので各参加者の解いた問題数と解いてない問題数が与…

1624: Income Inequality

AOJ

所得格差 問題ページ① 問題ページ② 解き方 n人の所得の平均値を求めてから、n人すべての所得と平均値を比べていく。 ソースコード(python) ans = [] while True: n = int(input()) if n == 0: break a = list(map(int, input().split())) avg = sum(a) / n…

2881: Change of the Era Name

AOJ

改元 問題ページ① 問題ページ② 解き方 受け取った入力の年と月から平成または新元号に変換するのかを判断する。 コードの説明 入力をそれぞれ4つの変数g(元号), y(年), m(月), d(日)に割り当てる。 あとはif文を使って元号を平成にするのか新元号にするのか…

3026: ai1333

AOJ

Problem A: ai1333 問題ページ 解き方 100年ごとにIDの末尾に3を加えればいいので、与えられた入力xを100で割り商を求めてから、求めた商の分だけ3をIDに加える。 コード(python) x = int(input()) print("ai1333{}".format("3"*(x // 100))) 関連リ…

0641: Pencils

AOJ

鉛筆(Pencils) 問題ページ 解き方 JOI君はセットXまたはセットYのどちらか一方しか選ぶことができないので、N本の鉛筆を買うときのセットXとセットYの最小値をそれぞれ求める。 コードの説明 入力を受け取った後にセットXとセットYについてそれぞれ何セッ…

0195: 人気の出店は?

AOJ

What is the most Popular Shop in Tokaichi? 問題ページ 解き方 一行ごとにひとつの店の午前と午後の販売個数を入力として受け取るので、販売個数を入れる長さが5のリストを用意してひとつの店の午前と午後の販売個数を足したものを入れていく。 コードの…

0582: Triangle Types

AOJ

問題1 問題ページ 解き方 方針 与えられた三辺から三角形が存在するか確認する。 三角形の存在条件は、a + b > c, かつ b + c > a, かつ c + a > b 辺aが最大の辺の長さのとき、直角三角形、鋭角三角形、鈍角三角形の成立条件は以下の通りです。 直角三角形…

0105: Book Index

AOJ

本の索引 問題ページ 解き方 語句とページ番号を辞書に登録、語句をアルファベット順に出力し、同時にページ番号も昇順に出力するだけ。 コード(python) d = {} while True: try: data = input().split() except: break word = data[0] number = int(data[1]…

1200: Goldbach's Conjecture

AOJ

Problem A:Goldbach's Conjecture 問題ページ 解き方 求めたい答えは与えられた4以上の偶数あるnに対して、そのnがある2つの素数の和と等しいような素数のペアの数を求めることである。 まず素数を用意しなければいけないので、エラトステネスの篩を使っ…

1601: Short Phrase

AOJ

短句 問題ページ 解き方 単語の並びを5,7,5,7,7の順に区切っていくだけ。 コード(python) p = [5, 7, 5, 7, 7] while True: n = int(input()) if n == 0: break word = [input() for _ in range(n)] flag = False for i in range(len(word)): ip = …

2100: Saizo

AOJ

Problem A:サイゾウ 問題ページ 解き方 与えられたブロックに対して、登らなけらばならない最大の段差と降りなければならない最大の段差を求めるだけ。 コード(python) t = int(input()) for _ in range(t): n = int(input()) blocks = list(map(int, input(…

0020: Capitalize

AOJ

大文字変換 問題ページ 解き方 mapを使って入力を大文字に変換し、joinを使ってmapから変換した文字列を取り出す。 コード(python) print("".join(map(str.upper, input())))

0019: Factorial

AOJ

階乗 問題ページ 解き方 mathモジュールのfactorialを使う。 コード(python) import math print(math.factorial(int(input())))

0018: Sorting Five Numbers

AOJ

5つの数の整列 問題ページ 解き方 sortedとスライスを使う。 コード(python) print(*sorted(map(int, input().spilt()))[::-1])

0015: National Budget

AOJ

国家予算 問題ページ 解き方 テストケースではpythonを使うとオーバーフローについて心配する必要はなかったので、 与えられた数の和が80桁を超えればoverflowと出力、そうでなけらばそのまま和を出力するだけ。 コード(python) N = int(input()) for _ in…

0017: Caesar Cipher

AOJ

シーザー暗号 問題ページ 解き方 this、that、theのいずれかの単語が必ず含まれているので、どの単語が含まれているのかを見つける。 見つけ出したあとはその単語ともとに復号していく。 コード(python) import string strings = string.ascii_lowercase clu…

0016: Treasure Hunt

AOJ

宝探し 問題ページ 解き方 mathモジュールのsinとcosを使って求める。 sinとcosにはラジアンを渡す必要があるので、はじめにラジアンを求める。 ラジアンの求め方は角度x(π/180)。最初真っ直ぐ向いているので角度は90度。この角度と与えられた距離、求め…

0104: Magical Tiles

AOJ

不思議なタイル 問題ページ 解き方 5種類のタイルの情報を辞書に登録しておき、タイルの文字列を読み取り辞書に基づき動くだけ。条件より部屋の外に出ることはないので特に注意することはない。LOOPするかしないかの判定はタイルの枚数より判定する。なぜな…

0014: Integral

AOJ

積分 問題ページ 解き方 長方形の横の長さが与えられるので、それを基に縦の長さを求めて長方形の面積を求める。 その求めた長方形の面積を足していき、近似的な面接を求める。 コード(python) while True: try: d = int(input()) except: break print(sum(d…