nyoj 448

来源:互联网 发布:比较好的耳机 知乎 编辑:程序博客网 时间:2024/06/05 14:19

描述

请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,

比如当n=92081346718538,m=10时,则新的最大数是9888

输入

第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数

样例输入

2

92081346718538 10

1008908 5

样例输出

9888

98


#include<stdio.h>#include<string.h>int main(){    int t,m;    char n[110],temp,ma;    scanf("%d",&t);    int i,j,k,sum,flag=0;    while(t--){        memset(n,0,110);        scanf("%s %d",n,&m);        sum=strlen(n)-m;        k=m;        j=0;        temp=n[m];        while(sum--){                ma='0';            for(i=j;i<=k;i++)                if(n[i]>=ma) ma=n[i];               for(i=j;i<=k;i++)                    if(n[i]==ma) {temp=n[i];j=i;flag=1;break;}            if(flag==0) { printf("%c",temp); j=m;}            else { flag=0; printf("%c",temp);}            j++;k++;            temp=n[k];        }            printf("\n");    }    return 0;}



0 0