Advertisement
Morass

Permutation

Jun 2nd, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.38 KB | None | 0 0
  1. ll f[MX+1]={1};
  2. int C[26],X;
  3. void nth(ll K,char*o,char*s){
  4.     if(!X++)FT(1,MX+1)f[k]=f[k-1]*k;
  5.     ll L(strlen(s)),X(f[L]),T,l(0);
  6.     CL(C,o[L]=0);
  7.     F(L)++C[s[i]-'a'];
  8.     F(26)X/=f[C[i]];
  9.     if(K>X){*o=0;return;};
  10.     F(L)FF(26)if(C[j]){
  11.         --C[j];
  12.         T=f[L-i-1];
  13.         F(26)T/=f[C[i]];
  14.         if(K<=T){o[l++]='a'+j;break;}
  15.         ++C[j],K-=T;
  16.     }
  17. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement