思路分析:首先三个数字由1~9构成,相加为45,相乘为362880
数字最小为123,最大数字为987,所以遍历的数值范围为123~329
我们通过for循环暴力破解 P1064 - 组成三位数 - BTTCOJ
附上代码:仅供参考
#include<bits/stdc++.h>
using namespace std;
bool ok(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(ok(a,b,c))
cout<<a<<" "<<b<<" "<<c<<endl;
}
return 0;
}