<p>The set <code>[1, 2, 3, ...,&nbsp;n]</code> contains a total of <code>n!</code> unique permutations.</p>

<p>By listing and labeling all of the permutations in order, we get the following sequence for <code>n = 3</code>:</p>

<ol>
	<li><code>&quot;123&quot;</code></li>
	<li><code>&quot;132&quot;</code></li>
	<li><code>&quot;213&quot;</code></li>
	<li><code>&quot;231&quot;</code></li>
	<li><code>&quot;312&quot;</code></li>
	<li><code>&quot;321&quot;</code></li>
</ol>

<p>Given <code>n</code> and <code>k</code>, return the <code>k<sup>th</sup></code> permutation sequence.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 3
<strong>Output:</strong> "213"
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> n = 4, k = 9
<strong>Output:</strong> "2314"
</pre><p><strong class="example">Example 3:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 1
<strong>Output:</strong> "123"
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= n &lt;= 9</code></li>
	<li><code>1 &lt;= k &lt;= n!</code></li>
</ul>

class Solution {
public:
int fac(int p)
{
    int a=1;
    for(int i=1;i<=p;i++)
    {
        a*=i;
    }
    return a;
}
    string getPermutation(int n, int k) {
        
        
        int mx=n;
        string ans="";
        map<int,int>m;
        if(k==1)
        {
            for(int i=1;i<=mx;i++)
            {
                if(m[i]==0)
                {
                    ans+=to_string(i);
                }
            }
            return ans;
        }
        while(n>0)
        {
            int p=fac(n-1);
            int k1=k/(p);
            int k2=k%p;
            if(k2==0)
            {
                k1--;
            }
            int cnt=0;
            for(int i=1;i<=mx;i++)
            {
                if(m[i]==0)
                {
                    cnt++;
                    if(cnt==k1+1)
                    {
                        ans+=to_string(i);
                        m[i]++;break;
                    }
                }
            }
            n--;
            k-=k1*p;
        }
        return ans;
    }
};
9600