描述
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
-
输入
-
多组测试数据。
每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
输出
- 每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。 样例输入
-
1990 1 100 0 9090000078001234 6
样例输出
-
9190 100 9907000008001234
#include<stdio.h>
int m,t;
#include<string.h>
int main()
{
char a[100],max;
while(scanf("%s%d",a,&m)!=EOF)
{
int q,w;
t=strlen(a);
w=m;
for(int i=0; i<t&&w!=0; i++)
{
q=i;
for(int j=i+1; j<=w+i&&j<t; j++)
if(a[q]<a[j])
q=j;
for(int j=q; j>i; j--)
{
max=a[j];
a[j]=a[j-1];
a[j-1]=max;
}
w-=q-i;
}
printf("%s\n",a);
}
}