[3.16]竞赛入门经典,习题2-6

题目: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值