1 条题解

  • 0
    @ 2025-2-14 21:11:41

    C :

    #include <stdio.h>  
    #include <math.h>
    #include <string.h>
    
    //删去1个数字,使结果最大
    void del(char* str)
    {
    	int i;
    	int len = strlen(str);
    	for(i=0; i<len-1; ++i)
    	{
    		if(str[i]<str[i+1])
    		{
    			strcpy(str+i,str+i+1);
    			return ;
    		}
    	}
    	strcpy(str+i,str+i+1);
    }
    
    int main()  
    {  
    	int i,k,n,T;
    	char arr[100];
    scanf("%d",&T);	
    while(T--)
    {
      scanf("%d%d",&k,&n);
      sprintf(arr,"%d",k);
    	  for(i=0; i<n; ++i)
         del(arr);
      printf("%s\n",arr);
    }	
    return 0;  
    } 
    

    C++ :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
         char a[200],b[200];
         int i,j,k,l,m,n;
         scanf("%d",&n);
         for (i=0;i<n;i++)
         {
             scanf("%s %d",a,&m);
             
             l=strlen(a);
             m=l-m;
             int y=0;
             if (m==0) printf("0");
             for (j=0;j<m;j++)
             {
                  int x=0;
                  char c='-';
                  for (k=y;k<l-m+j+1;k++)
                      if (a[k]>c){c=a[k]; x=k;}
                      b[j]=c;
                      y=x+1;
             }
             for (j=0;j<m;j++)
                printf("%c",b[j]);
             printf("\n");
         }
    }      
    

    Pascal :

    var i,j,k,n,x,z:longint;
        s:string;y:char;
    begin
     readln(x);
     for z:=1 to x do
      begin
       read(y);s:='';
       while y<>' ' do
        begin
         s:=s+y;read(y);
        end;
       readln(n);
       while n>0 do
        begin
         i:=1;
         while (i<length(s)) and (s[i]>=s[i+1]) do
          inc(i);
         delete(s,i,1);
         dec(n);
        end;
       while (length(s)>1) and (s[1]='0') do
        delete(s,1,1);
       writeln(s);
      end;
    end.
    
    • 1

    信息

    ID
    689
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者