1. 程式人生 > >組成三位數

組成三位數

return std 組成 int 比例 條件 第一個 main 判斷

3023: 組成三位數

時間限制: 1 Sec 內存限制: 125 MB
提交: 6 解決: 2
[提交][狀態][討論版][命題人:外部導入]

題目描述

將1,2,…,9共9個數分成三組,分別組成三個三位數,且使這三個三位數構成1:2:3的比例,試求出所有滿足條件的三個三位數。

例如:三個三位數192,384,576滿足以上條件。

輸入

本題無輸入。

輸出

輸出所有符合要求的三個三位數,每一組占一行,數字之間由一個空格分隔。

每組中的三個數字按照從小到大輸出,各組之間按照每組的第一個數從小到大輸出。

樣例輸入

本題無輸入。

樣例輸出

本題結果是唯一的,所以不提供輸出樣例。滿足條件的第一組數據為
192 384 576


解題思路:開一個for,從123開始到329判斷,是否滿足各位數和等於45,各位數乘積等於362880即可,註意一定要盡量減少判斷的數目,因為最大數是987,所以i的最大值是329
#include<bits/stdc++.h>
using namespace std;

bool check(int x,int y,int z)
{
    if(x%10+x/10%10+x/100+y%10+y/10%10+y/100+z%10+z/10%10+z/100==45)
        if((x%10)*(x/10%10)*(x/100)*(y%10)*(y/10%10)*(y/100)*(z%10)*(z/10%10)*(z/100)==362880)
        return true;
    return false;
}

int main()
{
    for(int i=123;i<=329;++i)
    {
        
int a=i,b=2*i,c=3*i; if(check(a,b,c))cout<<a<<" "<<b<<" "<<c<<endl; } return 0; }

組成三位數