数字黑洞大家应该都听说过吧,一个任意的四位正整数n,将数字重新组成一个最大的数和一个最小的数相减,重复这个过程,必得6174。将永远出不来。输出这个四位数掉进黑洞的步数
思路大概就是用while循环
1.while循环里面写什么?
就是先创建数组s[4],让n不断%10,/10,得到n的数字拆解形式
for(int i=3;i>=0;i--){
s[i]=n%10;
n=n/10;
}
2.sort求出n的数组拆解形式中心组和的最大,小数
sort(s,s+4);
a=s[0]+10*s[1]+100*s[2]+1000*s[3];
b=1000*s[0]+100*s[1]+10*s[2]+s[3];
n=a-b;
然后用一个sum变量,每算一次,+1
完整代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int s[4];
int main(){
int n,a,b;
cin>>n;
int sum=0;
while(n!=6174){
for(int i=3;i>=0;i--){
s[i]=n%10;
n=n/10;
}
sort(s,s+4);
a=s[0]+10*s[1]+100*s[2]+1000*s[3];
b=1000*s[0]+100*s[1]+10*s[2]+s[3];
n=a-b;
sum++;
}
cout<<sum<<endl;
return 0;
}