算廿四
Calculator
功能: 算廿四
描述: 即使用 +,-,*,/,(,) 将四个数(一般指正整数, 并且传统上限制不超过10)组成一个算式, 使其结果为24.
函数: eq24(a,b,c,d)
返回: 所有能计算出24的算式
请问总共有多少种不同的算式?
注意, 这里要找的是本质上不同的算式,
比如 a-b+c 与 a-(b-c) 虽然形式上不同, 但本质上是同一个算式.
Calculator
功能: 算廿四
描述: 即使用 +,-,*,/,(,) 将四个数(一般指正整数, 并且传统上限制不超过10)组成一个算式, 使其结果为24.
函数: eq24(a,b,c,d)
返回: 所有能计算出24的算式
请问总共有多少种不同的算式?
注意, 这里要找的是本质上不同的算式,
比如 a-b+c 与 a-(b-c) 虽然形式上不同, 但本质上是同一个算式.
1
以下是分析
算法:
能表示的算式有下面几类:
一、
( )+d==24 (1)
( )-d==24 (2)
( )*d==24 (3)
( )/d==24 (4)
由于加法和乘法具有交换律, 故只有(2)和(4)需要考虑下面的情形:
d-( )==24 (2')
d/( )==24 (4')
二、
( )+( )==24
( )-( )==24
( )*( )==24
( )/( )==24
对于一, 相当于考虑 a,b,c 在加减乘除下所有可能的算式表达式
对于二, 所有的二元表达式, 不过要注意的是 a,b,c,d 不能重复.
a+b+c | a-b+c | a*b+c | a/b+c
a+b-c | a-b-c | a*b-c | a/b-c
a+b*c | a-b*c | a*b*c | a/b*c
a+b/c | a-b/c | a*b/c | a/b/c
(a+b)*c | (a-b)*c| a*(b+c) | a/(b+c)
(a+b)/c | (a-b)/c| a*(b-c) | a/(b-c)
二、
(a+b)+(c+d) | (a-b)+(c+d) | (a*b)+(c+d) | (a/b)+(c+d)
(a+b)+(c-d) | (a-b)+(c-d) | (a*b)+(c-d) | (a/b)+(c-d)
(a+b)+(c*d) | (a-b)+(c*d) | (a*b)+(c*d) | (a/b)+(c*d)
(a+b)+(c/d) | (a-b)+(c/d) | (a*b)+(c/d) | (a/b)+(c/d)
不过, 注意到
(a+b+c)+d 与 (a+b)+(c+d) 是等价的
(a/b+c)+d 与 (a/b)+(c+d) 是等价的.
因此, 二可以缩减为
(a+b)+(c*d) | (a-b)+(c*d) | (a*b)+(c*d) | (a/b)+(c*d)
(a+b)+(c/d) | (a-b)+(c/d) | (a*b)+(c/d) | (a/b)+(c/d)
粗略估计, 共24*6+8*4=144+32=176种
==========================================================
(a+b+c)+d | (a-b+c)+d | (a*b+c)+d | (a/b+c)+d
(a+b-c)+d | (a-b-c)+d | (a*b-c)+d | (a/b-c)+d
(a+b*c)+d | (a-b*c)+d | (a*b*c)+d | (a/b*c)+d
(a+b/c)+d | (a-b/c)+d | (a*b/c)+d | (a/b/c)+d
((a+b)*c)+d | ((a-b)*c)+d | (a*(b+c))+d | (a/(b+c))+d
((a+b)/c)+d | ((a-b)/c)+d | (a*(b-c))+d | (a/(b-c))+d
-------------------------------------------------------------
(a+b+c)-d | (a-b+c)-d | (a*b+c)-d | (a/b+c)-d
(a+b-c)-d | (a-b-c)-d | (a*b-c)-d | (a/b-c)-d
(a+b*c)-d | (a-b*c)-d | (a*b*c)-d | (a/b*c)-d
(a+b/c)-d | (a-b/c)-d | (a*b/c)-d | (a/b/c)-d
((a+b)*c)-d | ((a-b)*c)-d | (a*(b+c))-d | (a/(b+c))-d
((a+b)/c)-d | ((a-b)/c)-d | (a*(b-c))-d | (a/(b-c))-d
-------------------------------------------------------------
(a+b+c)*d | (a-b+c)*d | (a*b+c)*d | (a/b+c)*d
(a+b-c)*d | (a-b-c)*d | (a*b-c)*d | (a/b-c)*d
(a+b*c)*d | (a-b*c)*d | (a*b*c)*d | (a/b*c)*d
(a+b/c)*d | (a-b/c)*d | (a*b/c)*d | (a/b/c)*d
((a+b)*c)*d | ((a-b)*c)*d | (a*(b+c))*d | (a/(b+c))*d
((a+b)/c)*d | ((a-b)/c)*d | (a*(b-c))*d | (a/(b-c))*d
-------------------------------------------------------------
(a+b+c)/d | (a-b+c)/d | (a*b+c)/d | (a/b+c)/d
(a+b-c)/d | (a-b-c)/d | (a*b-c)/d | (a/b-c)/d
(a+b*c)/d | (a-b*c)/d | (a*b*c)/d | (a/b*c)/d
(a+b/c)/d | (a-b/c)/d | (a*b/c)/d | (a/b/c)/d
((a+b)*c)/d | ((a-b)*c)/d | (a*(b+c))/d | (a/(b+c))/d
((a+b)/c)/d | ((a-b)/c)/d | (a*(b-c))/d | (a/(b-c))/d
-------------------------------------------------------------
d-(a+b+c) | d-(a-b+c) | d-(a*b+c) | d-(a/b+c)
d-(a+b-c) | d-(a-b-c) | d-(a*b-c) | d-(a/b-c)
d-(a+b*c) | d-(a-b*c) | d-(a*b*c) | d-(a/b*c)
d-(a+b/c) | d-(a-b/c) | d-(a*b/c) | d-(a/b/c)
d-((a+b)*c) | d-((a-b)*c) | d-(a*(b+c)) | d-(a/(b+c))
d-((a+b)/c) | d-((a-b)/c) | d-(a*(b-c)) | d-(a/(b-c))
-------------------------------------------------------------
d/(a+b+c) | d/(a-b+c) | d/(a*b+c) | d/(a/b+c)
d/(a+b-c) | d/(a-b-c) | d/(a*b-c) | d/(a/b-c)
d/(a+b*c) | d/(a-b*c) | d/(a*b*c) | d/(a/b*c)
d/(a+b/c) | d/(a-b/c) | d/(a*b/c) | d/(a/b/c)
d/((a+b)*c) | d/((a-b)*c) | d/(a*(b+c)) | d/(a/(b+c))
d/((a+b)/c) | d/((a-b)/c) | d/(a*(b-c)) | d/(a/(b-c))
-------------------------------------------------------------
(a+b)+(c*d) | (a-b)+(c*d) | (a*b)+(c*d) | (a/b)+(c*d)
(a+b)+(c/d) | (a-b)+(c/d) | (a*b)+(c/d) | (a/b)+(c/d)
-------------------------------------------------------------
(a+b)-(c*d) | (a-b)-(c*d) | (a*b)-(c*d) | (a/b)-(c*d)
(a+b)-(c/d) | (a-b)-(c/d) | (a*b)-(c/d) | (a/b)-(c/d)
-------------------------------------------------------------
(a+b)*(c*d) | (a-b)*(c*d) | (a*b)*(c*d) | (a/b)*(c*d)
^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^
(a+b)*(c/d) | (a-b)*(c/d) | (a*b)*(c/d) | (a/b)*(c/d)
^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^
-------------------------------------------------------------
(a+b)/(c*d) | (a-b)/(c*d) | (a*b)/(c*d) | (a/b)/(c*d)
^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^
(a+b)/(c/d) | (a-b)/(c/d) | (a*b)/(c/d) | (a/b)/(c/d)
^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^
-------------------------------------------------------------
其中等价的有
((a+b)*c)*d == (a+b)*(c*d)
((a+b)/c)*d == (a+b)/c/d
((a-b)*c)*d == (a-b)*(c*d)
(a/b*c)*d == (a/b)*(c*d)
((a+b)*c)/d == (a+b)*(c/d)
((a-b)*c)/d == (a-b)*(c/d)
(a*b*c)/d == (a*b)*(c/d)
(a/b*c)/d == (a/b)*(c/d)
((a+b)/c)/d == (a+b)/(c*d)
((a-b)/c)/d == (a-b)/(c*d)
((a*b)/c)/d == (a*b)/(c*d)
((a-b)/c)*d == (a-b)/(c/d)
(a*b/c)*d == (a*b)/(c/d)
(a*b*c)*d == (a*b)*(c*d)
(a/b/c)/d == (a/b)/(c*d)
(a/b/c)*d == (a/b)/(c/d)
因此, 共24*6+8*2=144+16=160种
另一方面, 某些式子可以看成是之前(一)中式子的轮换式
(a+b)+(c*d) == a + (b+c*d) == (c*d+b)+a
(a-b)+(c*d) == a - b+c*d == (c*d-b)+a
(a+b)+(c/d) == a+b+c/d == (c/d+b)+a
(a-b)+(c/d) == a-b+c/d == (c/d-b)+a
(a+b)-(c*d) == (b-c*d)+a
(a-b)-(c*d) == (a-c*d)-b
(a+b)-(c/d) == (b-c/d)+a
(a-b)-(c/d) == (a-c/d)-b
============================================================
总结要计算的所有式子
====================
第二类(共计 (C_4^2)/2+P_4^2+P_4^4=3+12+24=39)
======
(a*b)+(c*d)
(a*c)+(b*d)
(a*d)+(b*c)
-----------
(a/b)+(c*d)
(a/c)+(b*d)
(a/d)+(b*c)
(b/a)+(c*d)
(b/c)+(a*d)
(b/d)+(a*c)
(c/a)+(b*d)
(c/b)+(a*d)
(c/d)+(a*b)
(d/a)+(b*c)
(d/b)+(a*c)
(d/c)+(a*b)
-----------
(a/b)+(c/d)
(a/b)+(d/c)
(a/c)+(b/d)
(a/c)+(d/b)
(a/d)+(b/c)
(a/d)+(c/b)
-----
(b/a)+(c/d)
(b/a)+(d/c)
(b/c)+(a/d)
(b/c)+(d/a)
(b/d)+(a/c)
(b/d)+(c/a)
-----
(c/a)+(b/d)
(c/a)+(d/b)
(c/b)+(a/d)
(c/b)+(d/a)
(c/d)+(a/b)
(c/d)+(b/a)
-----
(d/a)+(b/c)
(d/a)+(c/b)
(d/b)+(a/c)
(d/b)+(c/a)
(d/c)+(a/b)
(d/c)+(b/a)
------------
第一类 (共计231个式子)
>> 23+6+12+24+6+4+12+12+12+12+12+24+12+12+24+24==231
a+b+c+d
a-b+c+d
a-c+b+d
a-d+b+c
b-a+c+d
a*b+c+d
a*c+b+d
a*d+b+c
b*c+a+d
b*d+a+c
c*d+a+b
a/b+c+d
b/a+c+d
a/c+b+d
c/a+b+d
a/d+b+c
d/a+b+c
b/c+a+d
c/b+a+d
b/d+a+c
d/b+a+c
c/d+a+b
d/c+a+b
-----------
a-b-c+d
a-b+c-d
a+b-c-d
b-a-c+d
b-a+c-d
c-a-b+d
-----------
a*b-c+d
a*b-d+c
a*c-b+d
a*c-d+b
a*d-b+c
a*d-c+b
b*c-a+d
b*c-d+a
b*d-a+c
b*d-c+a
c*d-a+b
c*d-b+a
-----------
a/b-c+d
a/b-d+c
b/a-c+d
b/a-d+c
----
a/c-b+d
a/c-d+b
c/a-b+d
c/a-d+b
----
a/d-b+c
a/d-c+b
d/a-b+c
d/a-c+b
----
b/c-a+d
b/c-d+a
c/b-a+d
c/b-d+a
----
b/d-a+c
b/d-c+a
d/b-a+c
d/b-c+a
----
c/d-a+b
c/d-b+a
d/c-a+b
d/c-b+a
-------------
a+b-c*d
a+c-b*d
a+d-b*c
b+c-a*d
b+d-a*c
c+d-a*b
-------------
b*c*d+a
a*c*d+b
a*b*d+c
a*b*c+d
-------------
a*b/c+d
a*b/d+c
a*c/b+d
a*c/d+b
a*d/b+c
a*d/c+b
b*c/a+d
b*c/d+a
b*d/a+c
b*d/c+a
c*d/a+b
c*d/b+a
-------------
a+b+c/d
a+b+d/c
a+c+b/d
a+c+d/b
a+d+b/c
a+d+c/b
b+c+a/d
b+c+d/a
b+d+a/c
b+d+c/a
c+d+a/b
c+d+b/a
-------------
a+b-c/d
a+b-d/c
a+c-b/d
a+c-d/b
a+d-b/c
a+d-c/b
b+c-a/d
b+c-d/a
b+d-a/c
b+d-c/a
c+d-a/b
c+d-b/a
-------------
a/(b*c)+d == a/b/c+d
a/(b*d)+c
a/(c*d)+b
b/(a*c)+d
b/(a*d)+c
b/(c*d)+a
c/(a*b)+d
c/(a*d)+b
c/(b*d)+a
d/(a*b)+c
d/(a*c)+b
d/(b*c)+a
-------------
a*(b+c)+d 形如 ((a+b)*c)+d
a*(b+d)+c
a*(c+d)+b
b*(a+c)+d
b*(a+d)+c
b*(c+d)+a
c*(a+b)+d
c*(a+d)+b
c*(b+d)+a
d*(a+b)+c
d*(a+c)+b
d*(b+c)+a
-------------
a*(b-c)+d 形如 ((a-b)*c)+d
a*(c-b)+d
a*(b-d)+c
a*(d-b)+c
a*(c-d)+b
a*(d-c)+b
b*(a-c)+d
b*(c-a)+d
b*(a-d)+c
b*(d-a)+c
b*(c-d)+a
b*(d-c)+a
c*(a-b)+d
c*(b-a)+d
c*(a-d)+b
c*(d-a)+b
c*(b-d)+a
c*(d-b)+a
d*(a-b)+c
d*(b-a)+c
d*(a-c)+b
d*(c-a)+b
d*(b-c)+a
d*(c-b)+a
----------------
形如 (a/(b+c))+d
a/(b+c)+d
a/(b+d)+c
a/(c+d)+b
b/(a+c)+d
b/(a+d)+c
b/(c+d)+a
c/(a+b)+d
c/(a+d)+b
c/(b+d)+a
d/(a+b)+c
d/(a+c)+b
d/(b+c)+a
----------------
形如((a+b)/c)+d
(a+b)/c+d
(a+b)/d+c
(a+c)/b+d
(a+c)/d+b
(a+d)/b+c
(a+d)/c+b
(b+c)/a+d
(b+c)/d+a
(b+d)/a+c
(b+d)/c+a
(c+d)/a+b
(c+d)/b+a
----------------
形如((a-b)/c)+d
(a-b)/c+d
(a-b)/d+c
(b-a)/c+d
(b-a)/d+c
(a-c)/b+d
(a-c)/d+b
(c-a)/b+d
(c-a)/d+b
(a-d)/b+c
(a-d)/c+b
(d-a)/b+c
(d-a)/c+b
(b-c)/a+d
(b-c)/d+a
(c-b)/a+d
(c-b)/d+a
(b-d)/a+c
(b-d)/c+a
(d-b)/a+c
(d-b)/c+a
(c-d)/a+b
(c-d)/b+a
(d-c)/a+b
(d-c)/b+a
---------------
形如(a/(b-c))+d
a/(b-c)+d
a/(c-b)+d
a/(b-d)+c
a/(d-b)+c
a/(c-d)+b
a/(d-c)+b
b/(a-c)+d
b/(c-a)+d
b/(a-d)+c
b/(d-a)+c
b/(c-d)+a
b/(d-c)+a
c/(a-b)+d
c/(b-a)+d
c/(a-d)+b
c/(d-a)+b
c/(b-d)+a
c/(d-b)+a
d/(a-b)+c
d/(b-a)+c
d/(a-c)+b
d/(c-a)+b
d/(b-c)+a
d/(c-b)+a
----------------