c++打卡第三十三天
一、黑洞数
1、问题描述
2、设计思路
本题就是输入一个三位数,这个三位数各位不同,将这个三位数各位重新排序,最大值减去最小值,看这个差值与这个三位数是否相等,不相等的话对这个差值进行重排,然后继续与原差值进行比较,知道两数相等,此时输出这个黑洞数。
3、流程图
4、代码实现
#include<iostream> using namespace std; int mymax(int a, int b, int c) { int t; if(a<b) { t=a; a=b; b=t; } if(a<c) { t=a; a=c; c=t; } if(b<c) { t=b; b=c; c=t; } return (a*100+b*10+c); } int mymin(int a, int b, int c) { int t; if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } return (a*100+b*10+c); } int main() { int n,k,j,h,w1,w2,w3,min,max; for(n=102;n<1000;n++) { w1=n/100; w2=(n/10)%10; w3=n%10; if((w1!=w2)&&(w1!=w3)&&(w2!=w3)) { max=mymax(w1,w2,w3); min=mymin(w1,w2,w3); j=max-min; for(k=0;;k++)//限制循环次数,我们为了避免超时,先选择20次进行试验 { h=j; w1=j/100; w2=(j/10)%10; w3=j%10; max=mymax(w1,w2,w3); min=mymin(w1,w2,w3); j=max-min; if(h==j) { cout<<n<<"的黑洞数为:"<<h<<endl; break; } } } } return 0; }
5、结果实现