組成三位數
阿新 • • 發佈:2018-07-19
return std 組成 int 比例 條件 第一個 main 判斷
提交: 6 解決: 2
[提交][狀態][討論版][命題人:外部導入]
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; }
組成三位數