1 class Solution {
 2 public:
 3     string getPermutation(int n, int k) {
 4         int fac[10];
 5         bool vis[10];
 6         memset(vis, 0, sizeof(vis));
 7         fac[0] = 1;
 8         for(int i=1;i<10;i++)
 9             fac[i] = fac[i-1]*i;
10         string res(n, '0');
11         --k;
12         for(int i=n-1;i>=0;i--){
13             int temp = k/fac[i];
14             int j=1;
15             for(;j<10;j++){
16                 if(vis[j] == 0)
17                     temp--;
18                 if(temp<0)
19                     break;
20             }
21             res[n-i-1] = '0'+j;
22             vis[j] = 1;
23             k%=fac[i];
24         }
25         return res;
26     }
27 };