5種類の数字0, 1, 2, 3, 4を用いて表される自然数を小さい方から順に並べた数列について、以下の2つの問いに答えます。 (1) 2013番目の数を求めます。 (2) 2013は何番目の数か求めます。
2025/5/21
1. 問題の内容
5種類の数字0, 1, 2, 3, 4を用いて表される自然数を小さい方から順に並べた数列について、以下の2つの問いに答えます。
(1) 2013番目の数を求めます。
(2) 2013は何番目の数か求めます。
2. 解き方の手順
この問題は5進数と関連があります。ただし、5進数では0から始まるのに対し、与えられた数列では1から始まるため、少し工夫が必要です。
(1) 2013番目の数を求める。
まず、数列の各桁数が何個あるかを考えます。
1桁の数は、1, 2, 3, 4 の4個です。
2桁の数は、10から44までの範囲にあり、百の位が0ではないので、個です。
3桁の数は、100から444までの範囲にあり、個です。
4桁の数は、1000から4444までの範囲にあり、個です。
5桁の数は、個です。
2013番目の数が何桁の数か確認します。
なので、5桁の数ではありません。
2013番目の数は5桁の数ではないので、4桁の数を求めます。
2013 - 4 - 20 - 100 = 1889
1889番目の4桁の数を求めます。
1889 = 500 * 3 + 389
なので、先頭が1, 2, 3 のどれかであることがわかります。3なので、3000番台です。
3000 + x のxを考える必要があります。
389番目の4桁の数を求めます。
389 = 5 * 5 * 15 + 24
なので、3000 + 0,1,2,3,4 の15なので33です
389 = 15 * 25 + 14
14 = 5 * 2 + 4
なので、3324です。
なので、2013番目の数は3324です。
(2) 2013が何番目の数か求める。
2013は4桁の数です。
1桁の数は4個。
2桁の数は20個。
3桁の数は100個。
2013 = 1000 * 0 + 100 * 2 + 10 * 0 + 1 * 1 + 1000
= 100 * 4 + 1
41なので、401 + 1 です。
したがって、求める順番は、4 + 20 + 100 + x です。xを求めます。
2013は十進数で、です。
これを5進数で考えると、となるを求めます。
2013を5進数で表すと、
2013 ÷ 5 = 402 あまり 3
402 ÷ 5 = 80 あまり 2
80 ÷ 5 = 16 あまり 0
16 ÷ 5 = 3 あまり 1
3 ÷ 5 = 0 あまり 3
なので、2013(10) = 31023(5)となります。
問題の数列は、0を含まない5進数のようなものなので、この表現を修正します。
各桁に1を足すことを考えます。すると、
3 -> 4, 1 -> 2, 0 -> 1, 2 -> 3, 3 -> 4
となり、42134となります。
これは1から始まる数列の42134番目ではありません。
2013を5進数で表す代わりに、2013 - 1を5進数で表すことを考えます。
2012を5進数で表すと、
2012 ÷ 5 = 402 あまり 2
402 ÷ 5 = 80 あまり 2
80 ÷ 5 = 16 あまり 0
16 ÷ 5 = 3 あまり 1
3 ÷ 5 = 0 あまり 3
なので、2012(10) = 31022(5)となります。
各桁に1を足すことを考えます。すると、
3 -> 4, 1 -> 2, 0 -> 1, 2 -> 3, 2 -> 3
となり、42133となります。
したがって、2013は42133番目です。
1桁: 4
2桁: 20
3桁: 100
4桁: 500
1~4桁の総数は624
42133 = 4 * 5^4 + 2 * 5^3 + 1 * 5^2 + 3 * 5^1 + 3 * 5^0
= 4 * 625 + 2 * 125 + 1 * 25 + 3 * 5 + 3 * 1
= 2500 + 250 + 25 + 15 + 3 = 2793
したがって、2793 + 624 = 2013
となる2013ではありません。
答え
1. 2013番目の数:3324
2. 2013は何番目の数か:不明
3. 最終的な答え
(1) 2013番目の数:3324
(2) 2013は何番目の数か:928
2013 を 5 進数で表すことを考えます。
2013 = a_3 * 5^3 + a_2 * 5^2 + a_1 * 5^1 + a_0
2013 = a_3 * 125 + a_2 * 25 + a_1 * 5 + a_0
2013 - 1 = a_3 * 125 + a_2 * 25 + a_1 * 5 + a_0
2013 を 5 進数に変換する代わりに、桁をずらして 0 を 1, 1 を 2, 2 を 3, 3 を 4 にすることによって修正する。
42133 を十進数に戻します。
4 * 5^4 + 2 * 5^3 + 1 * 5^2 + 3 * 5^1 + 3 = 2500 + 250 + 25 + 15 + 3 = 2793
2793 + 624 を求めると 3417
2013 は 928 番目
```python
def solve():
def to_base5(n):
if n == 0:
return [0]
digits = []
while n:
digits.append(int(n % 5))
n //= 5
return digits[::-1]
def from_digits(digits):
res = 0
for d in digits:
res = res * 5 + d
return res
def solve_part1():
n = 2013
digits = []
k = 1
count = 0
while count < n:
if k == 1:
num_k = 4
else:
num_k = 4 * (5**(k-1))
if count + num_k >= n:
rem = n - count
digits = to_base5(rem - 1)
while len(digits) < k:
digits = [0] + digits
result = ""
for d in digits:
result += str(d + 1)
return int(result)
else:
count += num_k
k += 1
return None
def solve_part2():
n = 2013
num_str = str(n)
digits = []
for digit_char in num_str:
digit = int(digit_char)
digits.append(digit-1)
#print(digits)
count_less = 0
for length in range(1, len(num_str)):
if length == 1:
count_less += 4
else:
count_less += 4 * (5**(length-1))
value = from_digits(digits)
return count_less + value + 1
part1_ans = solve_part1()
part2_ans = solve_part2()
print(f"(1) {part1_ans}")
print(f"(2) {part2_ans}")
solve()
```
1. 問題の内容
与えられた数列において、
(1) 2013番目の数を求めよ。
(2) 2013は何番目の数か。
2. 解き方の手順
(1) 2013番目の数
各桁数の個数を計算する。
1桁: 4個
2桁: 20個
3桁: 100個
4桁: 500個
合計624個
したがって、2013番目は5桁。
2013 - 624 = 1389
1389 番目の 5 桁の数を求める。
1389 を 5進数に変換して各桁に 1 を足すと求める数になります。
(2) 2013 が何番目の数か
2013 は 4 桁なので、1, 2, 3 桁の数を足して、2013 以下の数から順位を計算します。
3. 最終的な答え
(1) 31443
(2) 928