結果
| 問題 |
No.1311 Reverse Permutation Index
|
| コンテスト | |
| ユーザー |
rlangevin
|
| 提出日時 | 2023-02-16 12:45:39 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 37 ms / 1,500 ms |
| コード長 | 985 bytes |
| コンパイル時間 | 155 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 52,480 KB |
| 最終ジャッジ日時 | 2024-07-18 13:56:52 |
| 合計ジャッジ時間 | 921 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 6 |
ソースコード
def decode(n):
seen = [0] * S
lst = []
for i in range(S):
ind = -1
for j in range(S):
if not seen[j]:
val = j
break
for j in range(S):
if seen[j]:
continue
ind += 1
if ind * fact[S - i - 1] <= n:
val = j
seen[val] = 1
lst.append(val + 1)
n %= fact[S - i - 1]
return lst
def encode(X):
seen = [0] * S
v = 0
for i in range(S):
ind = 0
for j in range(S):
if seen[j]:
continue
if j != X[i] - 1:
ind += 1
else:
break
v += ind * fact[S - i - 1]
seen[X[i] - 1] = 1
return v
N, S = map(int, input().split())
fact = [1] * (S + 1)
for i in range(1, S + 1):
fact[i] = fact[i - 1] * i
L = decode(N)
LL = []
for i in range(S):
LL.append(L.index(i + 1) + 1)
print(encode(LL))
rlangevin