第二章习题:1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。

九个数加起来是45,相乘是362880,这两个数是不变的,根据这两个条件来求
abc循环范围从组成的最小数为 123 到 999/3 = 333

#include <stdio.h>
#include <stdlib.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 <=333; 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;

}

猜你喜欢

转载自blog.csdn.net/baidu_36523021/article/details/81484835