我们可以用一个 8 位(加上小数)计算器进行多少次运算?

How many operations can we do with an 8-digit (plus decimal) calculator?

我有这个型号:一个简单的8位显示计算器(没有记忆按钮,没有平方根等)有按钮(小数点不算'digit'): 10 个整数 0 到 9 的按钮, 1 个点按钮(小数点,因此它可以容纳小数,例如从 0.0000001 到 9999999.9), 4 个操作按钮(+、-、/、*)和 1 个按钮表示相等 (=)。 (on/off 按钮不适用于此问题)

问题有两个:计算器屏幕上可以显示多少个数字? (数学解释的解决方案将不胜感激) *和 如果我们必须在 任何 对 2 个数字之间进行所有 4 种基本运算,根据上面的计算,那将是多少次运算?

感谢您的洞察力和帮助!

对于此答案的第一部分,我们想知道计算器屏幕上可以表示多少个数字。

从一个简化的例子开始,然后从那里开始。让我们从 1 位显示开始。使用此计算器,您可以显示从 0 到 9 的数字,并且可以在数字前(使其成为小数)或数字后(使其成为整数)在每个数字上显示小数点。可以生成多少个唯一编号?

.0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.

这 20 种可能性与 1 个重复号码组成 19 个唯一号码。让我们再次找到这个结果,但是使用数学方法我们可以扩大到更多的数字。

首先找到所有可以组成的数字 0 <= n < 1。对于适合该范围的数字,小数点必须在第一个数字之前。我们仍在处理 1 位数字,因此有 101 种不同的方法可以用大于或等于 0 但小于 1 的数字填充计算器。

接下来,找出所有可以组成的数字 1 <= n < 10。为此,您将小数点向右移动一位,因此现在它位于第一位数字之后,并且您也不能允许第一位数字为零(否则数字将小于 1)。剩下 9 个唯一数字。

[0<=n<1] + [1<=n<10] = 10 + 9 = 19

现在我们有了一个可扩展的系统。让我们用 2 位数字来做,这样你就可以在我们进入 8 位数字之前看到它是如何与多位数字一起工作的。用2个数字,我们可以表示0-99,小数点可以在三个不同的位置,这意味着我们要检查三个范围:0<=n<1, 1<=n<10, 10<=n< 100。第一个集合的第一个位置可以有零,因为集合中有零,但是每个其他集合的第一个位置不能有零,否则数字将在它下面的集合中。所以第一组有 102 种可能性,但其他每一组都有 9 * 101 种可能性。我们可以通过说对于我们的计算器可以容纳的任何数字 d 来概括这一点,集合 0<=n<1 将有 10 d种可能性,每组有9 * 10d-1种可能性

所以对于 2 位数字:

[0<=n<1] + [1<=n<10] + [10<=n<100] = 100 + 90 + 90 = 280

现在您可以看到出现了一种模式,它可以概括为我们可以在具有 d 的计算器上显示的唯一数字的总数 位数:

Unique displayable numbers = 10d + d * 9 * 10d-1

您可以使用一个简单的 Python 脚本来确认这个数学运算,该脚本手动查找所有可以显示的唯一数字,打印找到的数量,然后打印上述公式的结果。当它达到更高的数字位数时,它会陷入困境,但数字 1 到 5 应该足以证明公式有效。

for digits in range(1, 6):
    print('---%d Digits----' % digits)
    numbers = set()
    for d in range(digits + 1):
        numbers.update(i / 10**d for i in range(10**digits))
    print(len(set(numbers)))
    print(10**digits + digits * 9 * 10**(digits - 1))

结果:

---1 Digits----
19
19
---2 Digits----
280
280
---3 Digits----
3700
3700
---4 Digits----
46000
46000
---5 Digits----
550000
550000

这意味着一个带有 8 位显示屏的计算器可以显示 820,000,000 个唯一数字。

对于这个答案的第二部分,我们想知道 如果我们必须在上面计算的任何一对 2 数字之间进行所有 4 次基本运算,那将是多少次运算?

在 8.2 亿个唯一数字中,我们可以组成多少对数字? 8.2亿平方。那是 672,400,000,000,000,000 = 672.4 千万亿。这些数字对可以使用四种不同的运算,因此将其乘以 4 得到 2,689,600,000,000,000,000 = 2.6896 quintillion 在一个简单的 8 位计算器上可能的运算。

编辑:

如果原始问题的目的是不允许小数点出现在第一位数字之前(小数点 0<=n<1 必须以 [=49= 开头]0.) 然后可显示数字的公式变为 10d + (d - 1) * 9 * 10d-1,即唯一可显示数为7.3亿总操作数是 2.1316 quintillion.