题目:1——9,九个数字,组成三个三位数abc,def,ghi。
abc:def:ghi=1:2:3;1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次。
条件一:(想出来了)
for(i = 123; i <= 329; i++)
{
j = i * 2; //i的2倍
k = i * 3; //i的3倍
}
i 最小只能是123, 最大只能是329(因为最大数字只能是987)
条件2:(思路)
1~9加起来真能是45, 1~9乘起来只能是362880
所以我们可以将前面的i, j, k分别分解出来的9位数字相加, 相乘,
看最后的结果是不是45,362880
具体代码
//用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。
#include <stdio.h>
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++)
{
j = i * 2;
k = i * 3;
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;
}
http://zhidao.baidu.com/link?url=h1uRcPh0hB1vu-A09km4c5kilDoAwFgOrNCDG3kz8KxB3avgEhdXsiBj-N2pyisqcSHyp3-CsG-C-0LjzBQOGVhZSqfEPDBYq2f3z19RxiG