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 }


浙公网安备 33010602011771号