C语言 黑洞陷阱

495是一个很神奇的数,被称为黑洞数或者陷阱数。给定任何一个小于1000的正整数,经前位补0后可以得到一个三位数(两位数前面补1个0,一位数前面补2个0)。 如果这个三位数的三个数字不全相等,那么经有限次“重排求差”操作,总会得到495。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。 例如,对整数80,前位补0后得到080,重排后可以得到800,008。此时可以得到的最大数为800,最小数为008(即8)。那么需要4次重排求差即可得到495:

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main(){
 4 
 5     int n,t;
 6     int a,b,c;
 7     int k=1;
 8     printf("Input n(<1000):");
 9     scanf("%d",&n);
10     do{
11         a=n/100;//分离
12          b=n/10%10;
13          c=n%10;
14              if(a<b)
15          {
16           t=a;
17           a=b;
18           b=t;
19          }
20          if(a<c)
21          {
22              t=a;
23              a=c;
24              c=t;
25          }
26         if(b<c)
27         {
28             t=b;
29             b=c;
30             c=t;
31         }
32         n=(a*100+b*10+c)-(c*100+b*10+a);
33         printf("%d:%d-%d=%d\n",k,a*100+b*10+c,c*100+b*10+a,n);
34         k=k+1;
35     }while(n!=495);
36 
37 
38 
39 
40 
41 
42 }

 

posted @ 2021-11-29 10:58  程序员小贤  阅读(721)  评论(0)    收藏  举报