题目链接:https://www.patest.cn/contests/pat-a-practise/1069
#include<bits/stdc++.h>
#define cle(n) memset(n,0,sizeof(n))
const int maxn =10100;
using namespace std;
int a[4];
int cmp(int a,int b){return a>b;}
int non_in(int n){
int temp=n;
int i=0,t;
cle(a);
while(temp){
t=temp%10;
temp/=10;
a[i++]=t;
}
sort(a,a+4,cmp);
int ans=0;
for(int i=0;i<4;i++)ans=ans*10+a[i];
return ans;
}
void print(int n){
int t=n;
int cnt=0;
while(t){
t/=10;
cnt++;
}
if(n==0)cnt=1;
for(int i=0;i<4-cnt;i++)cout<<'0';
cout<<n;
}
int non_de(int n){
int temp=n;
int i=0,t;
cle(a);
while(temp){
t=temp%10;
temp/=10;
a[i++]=t;
}
sort(a,a+4);
int ans=0;
for(int i=0;i<4;i++)ans=ans*10+a[i];
return ans;
}
int main(){
int n;
cin>>n;
int tmax,tmin,ans=n;
while(1){
tmax=non_in(ans);
tmin=non_de(ans);
if(tmin==tmax){
print(tmax);
cout<<" - ";
print(tmin);
cout<<" = 0000"<<endl; return 0;
}
else {
ans=tmax-tmin;
print(tmax);
cout<<" - ";
print(tmin);
cout<<" = ";
print(ans);
cout<<endl;
}
if(ans==6174)break;
}
return 0;
}