AtCoder ABC 136 B – Uneven Numbers Python解説
Uneven Numbers
整数 N が与えられます。N 以下の正の整数のうち、(先頭に 0 をつけずに十進法で表記したときの) 桁数が奇数であるようなものの個数を求めてください。
AtCoder Beginner Contest 「Uneven Numbers」
整数Nの桁数が奇数か偶数か、奇数なら個数を数え上げていくということなので、len関数で文字列数を出し、奇数・偶数の判定をしていこうと思います。
n = int(input())
ans = 0
for i in range(1, n + 1):
i = str(i)
if len(i) % 2 != 0:
ans += 1
print(ans)
len関数は文字列にしか使えないので、一度str関数を使い文字列にしたあとでlen関数を使っています。
奇数の場合はansをカウントアップしていき、最後に出力して完了です。
この問題ではNの取り得る範囲が100000までなので次のようにも解けます。
n = int(input())
ans = 0
for i in range(1, n + 1):
if 1 <= i <= 9 or 100 <= i <= 999 or 10000 <= i <= 99999:
ans += 1
print(ans)
奇数になる数値の範囲をあらかじめ求めています。視覚的に分かりやすいのでおすすめです。