方法一
#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;
}
方法二
#include
<stdio.h>
#include <string.h>
int main(int argc, const char * argv[])
{
//用1,2,3...9組成3個三位數abc, def, ghi, 每個數字恰好使用一次,且abc:def:ghi=1:2:3,輸出所有解。
int n, i, j;
char a[10];
for(n = 123; n < 330; n++){
sprintf(a, "%d", n * 1000000 + n * 2 * 1000 + n * 3);
for(j = 0, i = '1'; i <= '9'; memchr(a, i++, 9) && j++);
if (j == 9) {
printf("%d %d %d \n", n, n * 2, n * 3);
}
}
return 0;
}