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、结果实现

 

posted @ 2023-05-21 17:15  七安。  阅读(30)  评论(0编辑  收藏  举报