結果
| 問題 |
No.1311 Reverse Permutation Index
|
| コンテスト | |
| ユーザー |
👑 Kazun
|
| 提出日時 | 2020-12-08 00:26:27 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 39 ms / 1,500 ms |
| コード長 | 583 bytes |
| コンパイル時間 | 1,118 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 52,480 KB |
| 最終ジャッジ日時 | 2024-09-17 14:11:45 |
| 合計ジャッジ時間 | 995 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 6 |
ソースコード
def f(n):
r=1
for i in range(1,n+1):
r*=i
return r
from itertools import permutations
N,S=map(int,input().split())
T=[1]*(S+1)
K=f(S)
X=[0]*(S+1)
P=[0]
for j in range(S,0,-1):
K//=j
a,N=divmod(N,K)
i=1
while True:
if T[i]==1 and a==0:
break
elif T[i]==1 and a!=0:
a-=1
i+=1
T[i]=0
P.append(i)
Q=[0]*(S+1)
for i in range(1,S+1):
Q[P[i]]=i
A=0
T=[1]*(S+1)
for i in range(1,S+1):
K=f(S-i)
for j in range(1,Q[i]):
if T[j]==1:
A+=K
T[Q[i]]=0
print(A)
Kazun