#include <iostream> using namespace std; int main() { int num; int k; cin>>num; cin>>k; int len=0; //int类型最长为5,long类型要设为10 int a[5]; //检测输入整数的长度,并将整数中的每一位存入数组 do { a[len]=num%10; len++; num/=10; } while(num>0); //此时的数组为倒序排列,反转数组为正序。 for(int i=0; i<len; i++) { int tmp=a[i]; a[i]=a[len-1-i]; a[len-1-i]=tmp; if(i>=len-1-i) break; } //交换次数 int stepnum=0; //记录已经做过交换的最大位数下标 int num1=0; while(true) { int manum=0; int i=0; //找寻数组中距离最高位小于=k-stepnum步的最大数 for(int n=num1; n<=k-stepnum+num1&&n<len; n++) { if(a[n]>manum) { manum=a[n]; stepnum+=(n-num1); i=n; } } //交换位置 a[i]=a[num1]; a[num1]=manum; if(stepnum>=k) break; num1++; } for(int i=0; i<len; i++) { cout<<a[i]; } return 0; }