280

——百度百科

含义

 1 2 3 4 5 6 7 8 9 10 11 12 1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 13 14 15 16 17 18 19 20 21 22 23 24 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321

……

ps:最后的+1只需要加一次

----

逆着来一遍

5-2=3　　3-2=1<=2在第3区间。第二个数是4

1<=1在第一区间。第三个数是1

1<=1在第一区间。第四个数是3

class linked_list{
private:
int num;
};

public:
}
}else{
while((it->next)!=NULL){
it=it->next;
}
it=it->next;
}
it->num=n;
it->next=NULL;
}
void Del(int n){
if(it->num==n){
delete(it);
cout<<"delete "<<n<<"   ("<<it<<")\n";
return;
}
while(it->next->num!=n){
it= it->next;
if(it->next==NULL)return;
}
it->next=it->next->next;
delete(temp);
cout<<"delete "<<n<<"   ("<<temp<<")\n";
}
int get(int n){
int cnt=0;
cout<<"begin ";
while(it->num!=n){
cout<<"---->"<<it<<"("<< it->num <<") ";
it=it->next;
cnt++;
}
cout<<endl;
return cnt;
}
int get2(int n){
cout<<"begin ";
while(n>1){
cout<<"---->"<<it<<"("<< it->num <<") ";
it=it->next;
n--;
}
cout<<"---->"<<it<<"("<< it->num <<") "<<endl;
return it->num;
}
};

代码

int factorial[]={1,1,2,6,24,120,720,5040,40320};//n!
int KT(int N,int x){
int ans=1;
stack<int> S;
while(x){
S.push(x%10);
x/=10;
}
REP(N){
}
REP(N){
int a=L.get(S.top());
L.Del(S.top());
S.pop();
ans+=a*factorial[N-o-1];
}
return ans;
}
int KTN(int N,int n){
int ans=0;
REP(N){
}
REP(N){
ans*=10;
int t=1;
while(n>factorial[N-o-1]){
n-=factorial[N-o-1];
t++;
}
int temp=L.get2(t);
ans+=temp;
L.Del(temp);
}
return ans;
}

• 点击查看/关闭被识别为广告的评论