AtCoder ABC171
2020-06-21(日)に行われたAtCoderBeginnerContest171の問題をA問題から順に考察も踏まえてまとめたものとなります.
前半ではABCまでの問題を扱います.
問題は引用して記載していますが,詳しくはコンテストページの方で確認してください.
コンテストページはこちら
公式解説PDF
A問題 αlphabet
問題文
英大文字か英小文字のいずれか$1$文字$α$が入力されます。$α$が英大文字なら"A"、英小文字なら"a"と出力してください。
大文字か小文字か判定する方法はたくさんあるのですが,今回はstr.istitle()
を使って判定しました.
n = input()
if n.istitle():
print("A")
else:
print("a")
B問題 Mix Juice
問題文
ある店で$N$種類の果物、果物$1,…,N$が売られており、それぞれの価格は一個あたり$p_1,…,p_N$円です。
この店で$K$種類の果物を一個ずつ買うとき、それらの合計価格として考えられる最小の金額を求めてください。
安いものから$k$種類の果物を購入すればいいので,価格をsortすれば簡単に解けました.
n, k = map(int, input().split())
p_list = list(map(int, input().split()))
p_list = sorted(p_list)
print(sum(p_list[:k]))
C問題 One Quadrillion and One Dalmatians
問題文
ロジャーは、彼のもとに突如現れた$1000000000000001$匹の犬をすべて飼うことを決意しました。犬たちにはもともと$1$から $1000000000000001$までの番号がふられていましたが、ロジャーは彼らに以下のルールで名前を授けました。
・$1,2,⋯,26$番の番号がついた犬はその順に a,b,...,z と命名されます。
・$27,28,29,⋯,701,702$番の番号がついた犬はその順に aa,ab,ac,...,zy,zz と命名されます。
・$703,704,705,⋯,18277,18278$番の番号がついた犬はその順に aaa,aab,aac,...,zzy,zzz と命名されます。
・$18279,18280,18281,⋯,475253,475254$番の番号がついた犬はその順に aaaa,aaab,aaac,...,zzzy,zzzz と命名されます。
・$475255,475256,⋯$番の番号がついた犬はその順に aaaaa,aaaab,... と命名されます。
・(以下省略)
つまり、ロジャーが授けた名前を番号順に並べると:
a,b,...,z,aa,ab,...,az,ba,bb,...,bz,...,za,zb,...,zz,aaa,aab,...,aaz,aba,abb,...,abz,...,zzz,aaaa,... のようになります。
ロジャーはあなたに問題を出しました。
「番号$N$の犬の名前を答えよ。」
26進数的な考え方で解けると思って,実装したら通りました.
n = int(input())
n = n - 1
mozi_list = []
while True:
k = n % 26
n = n // 26 - 1
chr_s = chr(97 + k)
mozi_list.append(chr_s)
if n == -1:
break
for i in range(len(mozi_list)):
print(mozi_list[len(mozi_list)-i-1], end="")
前半はここまでとなります.
今回,解説がとても丁寧に記述してあったので,詳しい解法はそちらを参考にしてもらえたらと思います.
前半の最後まで読んでいただきありがとうございました.
後半はDEF問題の解説となります.
後半に続く.