康拓展开

我借着学的。

原链接:https://blog.csdn.net/ltrbless/article/details/87696372

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<vector>
 6 using namespace std;
 7 #define ll long long
 8 int a[5]={5,2,4,1,3};
 9 ll jcc[20];
10 vector<char>vec;
11 void jc()//打表 
12 {
13     jcc[0]=1; 
14     for(ll i=1;i<=16;i++){
15         jcc[i]=jcc[i-1]*i;
16     }
17 }
18 ll kangtuo()
19 {
20     ll ans=1;
21     for(int i=0;i<5;i++){//5为jcc长度 
22         int t=0;
23         for(int j=i+1;j<5;j++){
24             if(a[i]>a[j])t++;
25         }
26         ans+=t*jcc[5-i-1];
27     }
28     return ans;
29 }
30 void rekangtuo(ll k)
31 {
32     string s;
33     int n=vec.size();
34     k--;
35     for(int i=1;i<=n;i++){
36         int t=k/jcc[n-i];
37         k%=jcc[n-i];
38         s+=vec[t];
39         vec.erase(vec.begin()+t);
40     }
41     cout<<s<<endl;
42 }
43 int main()
44 {
45     jc();
46     ll ans=kangtuo();
47     cout<<ans<<endl;
48     int num;
49     for(int i=1;i<=16;i++){
50         if(ans/jcc[i]==0){//找逆展开最小位数 
51             num=i;
52             break;
53         }
54     }
55     for(int i=1;i<=num;i++){
56         vec.push_back(i+'0');
57     }
58     rekangtuo(ans);
59 }

 

posted @ 2021-07-19 11:15  20kmのshimakaze  阅读(59)  评论(0)    收藏  举报