少し前に2021年が始まり、あっという間にひと月が終わりました。と書いた気がしますが、あと1週間ほどで2か月目も終わりそうになっていますね。
引き続き慌ただしい日常を送っていますが、今回のABC192は少し落ち着いた状態で参加出来ました。
この記事では、A~C問題のACコードも記載していきます。使用言語はPython3です。
A – Star
剰余を求められる問題。
現在のコイン枚数を100で割った余りを次の100枚から引けば答えが出ます。
# SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192)
# A - Star
N=int(input())
ans=100-(N%100)
print(ans)
比較的最近、おつりを求める似たような問題(ABC173-A)がありました。
B – uNrEaDaBlE sTrInG
問題タイトルが読みにくい!ホントに!
繰り返し処理ができるかと、小文字/大文字の判定ができるかを問われる問題。
Python3では、islower()関数を利用したら小文字か否かを判定できます。
(isupper()で大文字判定もできます。)
偶奇判定は %2==0 or %2==1 で出来るので、これらを組み合わせて判定していき、途中で条件と異なる場合はNoを出力して終了し、最後までプログラムが実行されたらYesを出力すればOKです。
# SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192)
# B - uNrEaDaBlE sTrInG
S=input()
for i in range(len(S)):
L=S[i]
if i%2==0:
if L.islower()==True:
continue
else:
print("No")
exit()
else:
if L.islower()==True:
print("No")
exit()
else:
continue
print("Yes")
C – Kaprekar Number
書いている関数をプログラムできますか。と問われている問題。
C問題の問題文が読むの大変なものが多くて厳しいですね。
コンテスト中は焦っているのか、今回の内容もなかなか頭に入ってこなくてつらかったです。
書いてあることを実装するのは、まずは数字の各桁を配列に入れて、昇順/降順でソート。ソートした後の配列を数字として取り出せばOKです。
大きいほうから小さいほうを引く関数も作って、for文でK回実施すればOKです。
# SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192)
# C - Kaprekar Number
def func(strNum):
numlist=list(map(int,strNum))
g1list=sorted(numlist,reverse=True)
g2list=sorted(numlist)
g1=int("".join(list(map(str,g1list))))
g2=int("".join(list(map(str,g2list))))
fx=g1-g2
return fx
N,K=map(int,input().split())
for _ in range (K):
N=func(str(N))
print(N)
コメント