三连击

题目描述:将12....9共九个数分成三组,分别组成3个三位数,且使这3个三位数构成123的比例,试求出所有满足条件的3个三位数。

输入格式:无

输出格式:若干行,每行3个数字。按照每行第1个数字升序排列。

输入样例

输出样例

192 384 576

*  *  *

(剩余部分不予展示)

 

解题思路:

1、三个数之间存在123的关系,方便枚举

2、由于是9个数分组构成,故构成的三位数不会出现重复数字,所以可以从123开始枚举,但是因为是三位数,所以在333结束

3、最后判断三个三位数所有位数是19这九个数,并没有重复。(2个集合内所有数相加相乘结果一样,2个集合的内容一样)

 

代码如下:

 

#include <stdio.h>
int main()
{
    int a,b,c;
    for(a=123;a<=333;a++)/*直接枚举,因为九个数分成三组,成为三个三位数,
    所以不会由重复的数字组成,因此从123开始*/
            {
                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==1+2+3+4+5+6+7+8+9)&&
                   ((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==
                    (1)*(2)*(3)*(4)*(5)*(6)*(7)*(8)*(9)))
                    /*此处if语句通过abc三个数每一位数的和与乘积等于1到9的和与乘积
                    来进行判断是否有重复数字*/
                    printf("%d %d %d\n",a,b,c);
            }
    return 0;
}

 

posted @ 2022-03-30 09:47  嗨嗨害  阅读(311)  评论(0)    收藏  举报