题目描述
已知,一个任意的四位整数,将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即7641-1467=6174。将永远出不来。求证:所有四位数数字(全相同的除外)均能得到6174。
输入输出格式
输入格式:
一个任意的四位整数。
输出格式:
输出掉进黑洞的步数。
代码如下:
#include<bits/stdc++.h>
using namespace std;
bool cmpg(char a,char b){
return int(a)>int(b);
}
bool cmpl(char a,char b){
return int(a)<int(b);
}
int s1=0,s2=0,k;
void run(string n,int l){
if(l==8){
return;
}
string max=n;
string min=n;
sort(max.begin(),max.end(),cmpg);
sort(min.begin(),min.end(),cmpl);
s1=0,s2=0;
for(int i=0;i<4;i++){
s1=s1*10+int(max[i]-'0');
s2=s2*10+int(min[i]-'0');
}
k=s1-s2;
for(int i=0;i<4;i++){
n[3-i]=k%10+'0';
k/=10;
}
if(n=="6174"){
cout<<l;
return;
}
run(n,l+1);
}
int main(){
string num;
cin>>num;
run(num,1);
return 0;
}