1 条题解

  • 0
    @ 2023-3-13 12:11:08

    C :

    #include<stdio.h>
    int main()
    {
    	int n,a[4],x,y,t;
    	while(scanf("%d",&n)!=EOF)
    	{
    		while(n!=6174)
    		{
    			a[0]=n/1000;
    			a[1]=n/100%10;
    			a[2]=n/10%10;
    			a[3]=n%10;
    			if(a[0]<a[1]) { t=a[0]; a[0]=a[1]; a[1]=t; }
    			if(a[2]<a[3]) { t=a[2]; a[2]=a[3]; a[3]=t; }
    			if(a[0]<a[2]) { t=a[0]; a[0]=a[2]; a[2]=t; }
    			if(a[1]<a[3]) { t=a[1]; a[1]=a[3]; a[3]=t; }
    			if(a[1]<a[2]) { t=a[1]; a[1]=a[2]; a[2]=t; }
    			x=a[0]*1000+a[1]*100+a[2]*10+a[3];
    			y=a[0]+a[1]*10+a[2]*100+a[3]*1000;
    			n=x-y;
    			printf("%d-%d=%d\n",x,y,n);
    		}
    	}
    	return 0;
    }
    

    C++ :

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a[10]={0};
    int main()
    
    {
    	int n;
    	cin>>n;
    	while(n!=6174)
    	{
    		for(int i=1;i<=4;i++)
    		{
    			a[i]=n/1000;
    			n=(n-a[i]*1000)*10;
    		}
    		for(int j=1;j<=4;++j)
    			for(int z=1;z<=4-j;++z)
    				if(a[z]<a[z+1])
    				{int t=a[z];a[z]=a[z+1];a[z+1]=t;}
    			n=(a[1]*1000+a[2]*100+a[3]*10+a[4])-(a[4]*1000+a[3]*100+a[2]*10+a[1]);
    				if(a[4]!=0)
    				cout<<a[1]<<a[2]<<a[3]<<a[4]<<"-"<<a[4]<<a[3]<<a[2]<<a[1]<<"="<<n<<endl;
    				else 
    				{
    				  if(a[3]!=0) cout<<a[1]<<a[2]<<a[3]<<a[4]<<"-"<<a[3]<<a[2]<<a[1]<<"="<<n<<endl;
    					  else cout<<a[1]<<a[2]<<a[3]<<a[4]<<"-"<<a[2]<<a[1]<<"="<<n<<endl;
    					  }
    	}
    	return 0;
    }	
    

    Pascal :

    program p22103;
    var
     max,min,c,i:longint;
     p:array[1..4] of longint;
    
    procedure cw(n:longint);
    var
     i,j,t:longint;
    begin
     i:=0;
     while n<>0 do
      begin
       inc(i);
       p[i]:=n mod 10;
       n:=n div 10;
      end;
     for i:= 1 to 4 do
      for j:= i+1 to 4  do
       if p[i]>p[j] then
        begin t:=p[i]; p[i]:=p[j]; p[j]:=t; end; //min to max
    end;
    procedure qmax();
    var
     i:longint;
    begin
     max:=0;
     for i:=4 downto 1 do
      max:=max*10+p[i];
    end;
    procedure qmin();
    var
     i:longint;
    begin
     min:=0;
     for i:=1 to 4 do
      min:=min*10+p[i];
    end;
    
    begin
     readln(c);
     while c<>6174 do
      begin
       cw(c);
       qmax();
       qmin();
       c:=max-min;
       writeln(max,'-',min,'=',c);
      end;
    end.
    
    • 1

    信息

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