用
1
,
2
,
3
,
…
,
9
组成
3
个三位数
abc
,
def
和
ghi
,每个数字恰好使用一次,要
求
abc
:
def
:
ghi
=
1
:
2
:
3
。按照
“abc def ghi”
的格式输出所有解,每行一个解。提示:不必
太动脑筋。
#include<iostream>
#include<cstdio>
using namespace std;
void result(int num, int &result_add, int &result_mul)
{
int i, j, k;
i = num / 100; //百位
j = num / 10 % 10; //十位
k = num % 10; //个位
result_add += i + j + k; //分解出来的位数相加
result_mul *= i * j * k; //相乘
}
int main()
{
int i, j, k;
int result_add, result_mul;
for(i = 123; i <=329; i++)//i为abc,ghi为abc的三倍
{
j = i * 2;//def
k = i * 3; //ghi
result_add = 0;
result_mul = 1;
result(i, result_add, result_mul);
result(j, result_add, result_mul);
result(k, result_add, result_mul);
if(result_add == 45 && result_mul == 362880)
printf("%d %d %d\n", i, j, k);
}
return 0;
}
只要了解到这个特性:所有的单数相加=45,相乘=362880,就可以据此解题。
思路以及代码来源:1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。_鳄鱼儿的博客-CSDN博客