3.8 黑洞数
第一部曲:封装好求最大值和最小值的函数,每次循环,如果满足条件就输出并且跳出循环,如果没有就继续循环。
第二部曲:
第三部曲:
int maxx(int a,int b,int c)//求最大值
{
if(b>a) swap(a,b);//一定要按照这个顺序,先找到最高位最大
if(c>a)swap(a,c);
if(c>b)swap(b,c);
return 100*a+10*b+c;
}
int minx(int a,int b,int c)//求最小值
{
if(a>b)swap(a,b);
if(a>c)swap(a,c);
if(b>c)swap(b,c);
return 100*a+10*b+c;
}
int main()
{
int x;
cin>>x;
int a=x/100,b=(x/10)%10,c=x%10;
int max=maxx(a,b,c),min=minx(a,b,c);
int h=max-min;
int j;
while(1)
{
j=h;
a=h/100,b=(h/10)%10,c=h%10;
max=maxx(a,b,c),min=minx(a,b,c);
h=max-min;
if(max-min==j)//满足条件就输出,跳出循环
{
cout<<j;
break;
}
}
return 0;
}
第四部曲:
#include<iostream>
using namespace std;
const int N=1e5+10;
int maxx(int a,int b,int c)//求最大值
{
if(b>a) swap(a,b);//一定要按照这个顺序,先找到最高位最大
if(c>a)swap(a,c);
if(c>b)swap(b,c);
return 100*a+10*b+c;
}
int minx(int a,int b,int c)//求最小值
{
if(a>b)swap(a,b);
if(a>c)swap(a,c);
if(b>c)swap(b,c);
return 100*a+10*b+c;
}
int main()
{
int x;
cin>>x;
int a=x/100,b=(x/10)%10,c=x%10;
int max=maxx(a,b,c),min=minx(a,b,c);
int h=max-min;
int j;
while(1)
{
j=h;
a=h/100,b=(h/10)%10,c=h%10;
max=maxx(a,b,c),min=minx(a,b,c);
h=max-min;
if(max-min==j)//满足条件就输出,跳出循环
{
cout<<j;
break;
}
}
return 0;
}