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; }