题解
2025-06-14 20:23:33
发布于:四川
3阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
vector<long long>v;
long long startidx,endidx;
long long turns(string s){
long long ans=0;
long long k=s.size()-1;
for(long long i=0;i<s.size();i++){
ans+=(s[i]-'0')*pow(10,k);
k--;
}
return ans;
}
string turnint(long long x){
string s="";
long long t=x;
while(t>0){
s+=(t%10+'0');
t/=10;
}
reverse(s.begin(),s.end());
return s;
}
bool cmp(long long a,long long b){
return a>b;
}
bool check(){
for(long long i=0;i<v.size();i++){
for(long long j=i+1;j<v.size();j++){
if(i==j)continue;
if(v[j]==v[i]){
startidx=i;
endidx=j-1;
return true;
}
}
}
return false;
}
void dfs(string s){
if(check()){
for(long long i=startidx;i<=endidx;i++)cout<<v[i]<<" ";
cout<<endl;
return;
}
string ss=s;
sort(ss.begin(),ss.end());
long long mn=turns(ss);
string sss=s;
sort(sss.begin(),sss.end(),cmp);
long long mx=turns(sss);
long long ans=mx-mn;
//cout<<"ss:"<<ss<<" sss:"<<sss<<" mx:"<<mx<<" mn:"<<mn<<" mx-mn:"<<mx-mn<<endl;
v.push_back(ans);
dfs(turnint(ans));
}
int main(){
string s;
while(cin>>s){
startidx=0;
endidx=0;
if(s.size()==4){
cout<<"6174\n";
continue;
}
dfs(s);
v.clear();
}
return 0;
}
这里空空如也
有帮助,赞一个