90 分
#include<bits/stdc++.h>
#define ll long long
#define F(i,a,b) for (int i=a;i<=b;i++)
#define Test ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
const int N=1e7+10,NN=1e4+10;
ll n,m,k,x,y,u,v,w,cnt=0,ans=0,t=0,l,r,len,T,ans1,ans2;
ll mini=INT_MAX,maxi=0,Mod;
string s1,s2;
ll a[N];
int main(){
while(cin>>n){
ll step[30],id=1,last,Can=0;
while(1){
t=0,ans1=0,ans2=0;
while(n){
a[++t]=n%10;
n/=10;
}
sort(a+1,a+1+t);
for(int i=1;i<=t;i++) ans1=ans1*10+a[i];
for(int i=t;i>=1;i--) ans2=ans2*10+a[i];
n=ans2-ans1;
for(int i=1;i<=id;i++){
if(step[i]==n) Can=1;
if(Can) cout<<step[i]<<" ";
}
step[++id]=n;
if(Can){
cout<<"\n";
break;
}
}
}
return 0;
}
100 分
#include<bits/stdc++.h>
#define ll long long
#define F(i,a,b) for (int i=a;i<=b;i++)
#define Test ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
const int N=1e7+10,NN=1e4+10;
ll n,m,k,x,y,u,v,w,cnt=0,ans=0,t=0,l,r,len,T,ans1,ans2;
ll mini=INT_MAX,maxi=0,Mod;
string s1,s2;
ll a[N];
int main(){
while(cin>>n){
ll step[30],id=1,last,Can=0;
step[1]=n;
while(1){
t=0,ans1=0,ans2=0;
while(n){
a[++t]=n%10;
n/=10;
}
sort(a+1,a+1+t);
for(int i=1;i<=t;i++) ans1=ans1*10+a[i];
for(int i=t;i>=1;i--) ans2=ans2*10+a[i];
n=ans2-ans1;
for(int i=1;i<=id;i++){
if(step[i]==n) Can=1;
if(Can) cout<<step[i]<<" ";
}
step[++id]=n;
if(Can){
cout<<"\n";
break;
}
}
}
return 0;
}
应该是 n 本身就是循环数? 供后人参考一下吧