2016蓝桥杯C++A组第六题 寒假作业

2016蓝桥杯C++A组第六题 寒假作业

题目

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □

(如果显示不出来,可以参见【图1.jpg】)

每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?

请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

我的思路

看了网上关于这个题的思路多是DFS,我想说一下我的思路。
首先,我感觉不把问题简化就下手去算是很愚蠢的~我想到的简化主要有两点:

  1. 加法和乘法是满足交换律的,因此我们我们只需要考虑数1小于数2的方案(比如:6+7=13,3*4=12),然后乘以2。
  2. 减法可以转化为加法,除法可以转化为乘法(比如:9-8=1 => 1+8=9,10/2=5 => 2*5=10)。

因此,我们可以把问题转化为:在满足数1小于数2的情况下,填入1~13,构成两加法式和两乘法式的方案数。当然这个方案数不是题目要求的方案数,我们的方案数应当乘以2^4才是最后的答案!
当然,容易想到第三点:

  1. 两加法式互换和两乘法式互换,属于不同的方案。

至此,我们可以断定答案的方案数应该是2^6的整数倍!

代码

哈哈哈,自己写去吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值