【参加記録】AtCoder Beginner Contest 114
はじめに
AtCoder Beginner Contest 114に参加した記録です.
A - 753
入力が7か5か3だったら'YES'を出力,そうでなければ'NO'を出力する.
N = int(input()) if N == 7 or N == 5 or N == 3: print('YES') else: print('NO')
B - 754
文字列の先頭から順番に3つずつ取り出し,753との差の絶対値を比べていけば良い.
Pythonだと簡単.
S = list(input()) res = 753 for i in range(len(S)-2): X = '' for i in S[i:i+3]: X += i X = int(X) tmp = abs(753-X) if tmp < res: res = tmp print(res)
解説では2行で実装していました.
S = input() print(min(abs(int(S[i:i+3]) - 753) for i in range(len(S) - 2)))
https://img.atcoder.jp/abc114/editorial.pdf
C - 755
(7,5,3)の3桁以上入力の桁数以下の直積集合(?)によって,解説における準七五三数を列挙して条件に合うものの数をカウント.
itertoolsが非常に便利でした.暇があったら使い方のまとめみたいなものを作りたい.
解説によると再帰関数で実装するのが素直な方法らしいです.
import itertools import collections N = input() if int(N) < 100: print(0) exit() product_list = [] for i in range(3,len(N)+1): product_list += list(itertools.product('753', repeat=i)) res = 0 for i in product_list: num = "".join(list(i)) if int(N) < int(num): continue if num.count('5') > 0 and num.count('7') > 0 and num.count('3') > 0: res += 1 print(res)
D - 756
ググったら解けそうな気がしたけど,時間不足&結局方針も間違えていました.
コメント
ここ最近は競プロにあまり触れていなかったので,C問題が解けるか不安でしたが無事解くことができました.
そして今回のコンテストでレートが緑に到達しました.
まだまだC問題も安定して解ける訳ではないので,できる限り陥落しないように精進したいです.