File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < string>
2+ #include < vector>
3+ #include < list>
4+ #include < algorithm>
5+ using namespace std ;
6+
7+ vector<int > solution101 (int n, long long k) {
8+ vector<int > answer;
9+ list<int > l;
10+ vector<long long > factorial;
11+ factorial.push_back (1 );
12+
13+ for (int i = 0 ; i < n; i++) {
14+ l.push_back (i + 1 );
15+ factorial.push_back (factorial[i] * (i + 1 ));
16+ }
17+ // ex) 4,10
18+ for (int i = n-1 ; i >=0 ; i--) {
19+ long long q = k/factorial[i]; // q = 10/6 = 1
20+ k = k % factorial[i]; // r = 10%6 = 4
21+ if (k == 0 )
22+ q--;
23+
24+ list<int >::iterator iter = l.begin ();
25+ for (long long c = 0 ; c < q; c++)
26+ iter++;
27+ answer.push_back (*iter);
28+ l.erase (iter);
29+
30+ if (k == 0 ) {
31+ list<int >::reverse_iterator iter (l.rbegin ());
32+ for (; iter!= l.rend (); iter++)
33+ answer.push_back (*iter);
34+ break ;
35+ }
36+ }
37+
38+ return answer;
39+ }
You can’t perform that action at this time.
0 commit comments