【ABC186 C】「Unlucky 7」を解く【Python3】

「AtCoder」解説一覧へ

1以上N以下の整数のうち、10進数でも8進数でも7を含まないような数がいくつあるのか求める問題です。

提出
n = int(input())
ans = 0

for i in range(1,n+1):
    if "7" not in oct(i) and "7" not in str(i):
        ans+=1

print(ans)

Pythonでは、「oct()」を用いて数字を8進数の文字列に変換することができます。

(2進数はbin())

print(bin(20)) 
print(oct(20)) 
# > 0b10100
# > 0o24 

Nまでの整数をすべて調べ、それぞれの10進数と8進数の文字列の中に、「7」が含まれているかどうかを判定します。

どちらも含まれていなければ、「ans」に1足します。

合計数がansに入っているので、最後にそれを出力します。

【ABC186】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です