题目
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果显示不出来,可以参见【图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小于数2的方案(比如:6+7=13,3*4=12),然后乘以2。
- 减法可以转化为加法,除法可以转化为乘法(比如:9-8=1 => 1+8=9,10/2=5 => 2*5=10)。
因此,我们可以把问题转化为:在满足数1小于数2的情况下,填入1~13,构成两加法式和两乘法式的方案数。当然这个方案数不是题目要求的方案数,我们的方案数应当乘以2^4才是最后的答案!
当然,容易想到第三点:
- 两加法式互换和两乘法式互换,属于不同的方案。
至此,我们可以断定答案的方案数应该是2^6的整数倍!
代码
哈哈哈,自己写去吧~