新手村-BOSS战-P1618 三连击(升级版)

题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。

输入输出格式
输入格式:

三个数,A B C。

输出格式:

若干行,每行3个数字。按照每行第一个数字升序排列。

输入输出样例
输入样例#1:

1 2 3

输出样例#1:

192 384 576
219 438 657
273 546 819
327 654 981
————————————————
思路:可以直接枚举第一个数,然后算出后面两个数,且第一个数无需枚举所有三位数。

 #include<bits/stdc++.h>
    using namespace std;
    int a,b,c,flag=0;
    int j,k;
    int main()
    {
        scanf("%d%d%d",&a,&b,&c);
        for(int i=(123/a+min(123%a,1))*a;i<=987/a*a;i+=a)
        {
            j=i/a*b;
            k=i/a*c;
            if(j >= 100 && j <= 999 && k >= 100 && k <= 999)
            {
                int d[10],sum=0,xx=1;
                d[1]=i/100;
                d[2]=i/10%10;
                d[3]=i%10;
                d[4]=j/100;
                d[5]=j/10%10;
                d[6]=j%10;
                d[7]=k/100;
                d[8]=k/10%10;
                d[9]=k%10;
                for(int m=1;m<=9;m++)
                {
                    sum += d[m];
                    xx *= d[m];
                }
                if(sum == 45 && xx == 362880)
                {
                    flag = 1;
                    printf("%d %d %d\n",i,j,k);
                }
            }
        }
        if(flag == 0)printf("No!!!");
        return 0;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章