新手村-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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章