首页 > 其他 > 详细

三连击升级版(暴力枚举)

时间:2021-01-15 13:22:12      阅读:36      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

其实这道题比较简单,我们可以使用枚举,按照所给出的比例,将满足比例的三个数列举出来,然后再判断是否满足1~9都有

 

因为只有三个数,所以我们从1开始一直到999,然后将每一个三位数的每一位提取出来放在一个长度为10的数组中,每提取一个相应的数组位加1,最后如果数组下标1~9都是1的话就输出三个数

 

注意:1.每一位都是不超过999的数字,我刚开始写就犯了这样的错误 2.比例序列和数字都用double,不然推数的时候会出错

 

#include<iostream>
#include<cstring>
using namespace std;

int a[10];

int main(void)
{
    double A, B, C,v = 0;
    cin >> A >> B >> C;
    double _1, _2, _3;

    for (int i = 1; i < 1000; i++)
    {
        _1 = i;
        _2 = _1 * (B / A);
        _3 = _1* (C / A);

        if (_2 > 999 || _3 > 999) break;
        
        int m = _1;
        while (m)
        {
            a[m % 10]++;
            m /= 10;
        }

        m = _2;
        while (m)
        {
            a[m % 10]++;
            m /= 10;
        }

        m = _3;
        while (m)
        {
            a[m % 10]++;
            m /= 10;
        }

        int q = 1;
        for (int i = 1; i < 10; i++)
        {
            if (a[i] != 1)
            {
                q = 0;
                break;
            }
        }

        if (q)
        {
            cout << _1 << " " << _2 << " " << _3 << endl;
            v = 1;
        }


        memset(a, 0, sizeof(a));
    }
    if (v == 0)
    {
        cout << "No!!!" << endl;
    }
    return 0;
}

 

三连击升级版(暴力枚举)

原文:https://www.cnblogs.com/loliconsk/p/14280520.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!