P1008 三连击 巧妙的循环输出

https://www.luogu.com.cn/problem/P1008

在这里插入图片描述

最开始需要确定a的浮动区间,因为a,b,c无论如何都存在1:2:3的比例,最小值当然是123,但是我在最初确定最大值的视乎以为是321,但是实际上却是327,因此为了方便就将其设置为333.
如果三个数的每一位数相加等于1+2+。。。+9,相乘等于1*2。。。*9,这样就可以唯一确定数字不重不漏。

#include<iostream>
using namespace std;
int main()
{
    int a,b,c;
    for(a = 123;a <= 333;a++)
    {
        b = a*2;
        c = a*3;
        if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==45)&&((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==2*3*4*5*6*7*8*9))
            cout << a << " " << b << " " << c << endl;
    }
}
发布了395 篇原创文章 · 获赞 52 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/dghcs18/article/details/104324324