ABC114 をPythonで解く

atcoder.jp

A~Cを解いた。

A

X =int(input())
if X in [7,5,3]:
    ans ="YES"
else:
    ans ="NO"
print(ans)

 

B

m=min(m,xxx)でコード量削減

S =input()
m = 753 
for i in range(len(S)-2):
    tmp=(S[i:i+3])
    m=min(abs(753-int(tmp)),m)
print(m)

C

さすがに今日はjoinで結合すぐ思い出せた。総当たりで組み合わせを作って7,5,3が一回以上出てくる場合のみに絞る。あとは大小を比較する。

from itertools import product
N = int(input())
STR_N = str(N)
all_pat =[]
for i in range(3,len(STR_N)+1):
    pattern = list(product(["7","5","3"],repeat=i))
    for p in pattern:
        if len(set(p))==3:
            all_pat.append(int(''.join(p)))
all_pat = list(set(all_pat))
all_pat.sort()
cnt = 0
for a in all_pat:
    if a<=N:
        cnt+=1
print(cnt)