レベル3に並ぶ方法
2798 ワード
解き方
<初期解答方式>
from itertools import permutations
def solution(n, k):
firstLine = list(range(1, n + 1))
lines = list(permutations(firstLine, len(firstLine)))[k - 1:k]
return lines.pop()
<因数分解>
「シーケンスの純粋な原理は乗算と同じです」
n並ぶ方法はn!
1番目の位置が確定した後の残りの並び方の数はn-1!木の枝
[1,2,3]なら
最初の場所を指定した場合:nP 1*(n-1)!
1番が1位なら2(n-1!)木の枝
2番が1位でも2(n-1!)木の枝
3番が1位でも2(n-1!)木の枝
2位になるとnP 2*(n-2)!
なぜk-1//因式分解に分けたのか
≪行|Row|Essbase_Studio≫で索引を検索してポップアップする場合に使用します
k−1は直感的にk番目であるが,インデックス的にはk−1番目である.
具体的な説明
line = [1,2,3]
K-1:前列
0番目~:1
2番目の~:2
4つ目~:3
(k-1)//(n-1)! = 行の索引(検索する人の番号)
line2 = [1,2,3,4]
i+(n-1)!=前席
1つ目~:1
7番目~:2
13番目~:3
19番目~:4
(k-1)//(n-1)! = 「行の索引」
(k-1)=0、1、2、3、4、5の「行インデックス」は1
(k-1)=6,7,8,9,10,11の「lineのインデックス」は2
(k-1)=12,13,14,15,16,17の「lineのインデックス」は3
(k-1)=18,19,20,21,22,23の「lineのインデックス」は4
k%=原因
:kを順番に減らすプロセス
すなわち,実装には書き込み置換のみが必要であるが,タイムアウト順序の純粋な原理出力に必要な部分としてプレースホルダ(factorial)を用いなければならない.
Reference
この問題について(レベル3に並ぶ方法), 我々は、より多くの情報をここで見つけました https://velog.io/@hayeon/3Level-줄서는방법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol