1.问题描述
编程求三位数中的“黑洞数”。黑洞数又称陷阱数,任何一个数字不全相同的整数,经有限次“重排求差”操作,总会得到某一个或一些数,这些数即为黑洞数。“重排求差”操作是将组成一个数的各位数字重排得到的最大数减去最小数,例如207,“重排求差”操作序列是702-027=675,963-369=594,954-459-495,再下去就不变了,再用208算一次,也停止到495,所以495是三位黑
洞数。
2.代码
#include<stdio.h>
int main(){
int N;
scanf("%d",&N);
int n=N;
for(int i=1;;i++){
int m[3]={0};
for(int i=0;i<3;i++){
m[i]=n%10;
n/=10;
}
int a=m[0],b=m[1],c=m[2];
if(a==b&&b==c)
return 0;
//a、b、c比较大小
if(a>b){
int t=a;
a=b;
b=t;
}
if(a>c){
int t=c;
c=a;
a=t;
}
if(b>c){
int t=b;
b=c;
c=t;
}
int min=a*100+b*10+c;
int max=c*100+b*10+a;
int hole=max-min;
printf("%d: %d - %d = %d\n",i,max,min,hole);
n=hole;
if(hole==495)
break;
}
return 0;
}