Сколько операций мы можем сделать с калькулятором 8-ди git (плюс десятичный)? - PullRequest
0 голосов
/ 22 января 2020

У меня есть эта модель: простой 8-ди git дисплей калькулятора (без кнопок памяти, без квадрата root et c et c) имеет кнопки (десятичная точка не считается как 'ди git '): 10 кнопок для целых чисел от 0 до 9, 1 кнопка для точки (десятичная точка, поэтому она может содержать десятичные дроби, например от 0,0000001 до 9999999,9), 4 кнопки для операций (+, -, /, *) и 1 кнопка для равенства (=). (кнопка включения / выключения не учитывается в этом вопросе)

Вопрос двоякий: сколько чисел они могут представить на экране калькулятора? (математическое решение будет приветствоваться) * И если нам нужно будет выполнить все 4 базовых c операции между любой парой из 2 чисел, из вышеприведенного, сколько будет это операций?

Спасибо за понимание и помощь!

1 Ответ

1 голос
/ 26 января 2020

Для первой части этого ответа мы хотим знать , сколько чисел может быть представлено на экране калькулятора.

Начните с упрощенного примера и продолжайте оттуда. Начнем с 1-ди git дисплея. С помощью этого калькулятора вы можете отображать числа от 0 до 9, и вы можете отображать каждое из этих чисел с десятичной точкой либо до di git (делая его десятичным), либо после di git (делая его целое число). Сколько уникальных номеров можно сделать?

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

То есть 20 вариантов с одним повторным числом составляют 19 уникальных чисел. Давайте снова найдем этот результат, но с помощью математического подхода, который мы можем масштабировать до большего числа цифр.

Начнем с нахождения всех чисел 0 <= n <1, которые можно сделать. Чтобы числа вписывались в этот диапазон, десятичная точка должна быть перед первой ди git. Мы все еще имеем дело с 1 di git, поэтому есть 10 <sup>1 различных способов заполнить калькулятор числами, которые больше или равны 0, но меньше 1.

Затем найдите все числа 1 <= n <10, которые можно сделать. Для этого вы перемещаете десятичную точку на одно место вправо, так что теперь она находится после первого di git, и вы также не можете допустить, чтобы первый di git был равен нулю (или число будет меньше 1). Это оставляет вам 9 уникальных номеров. </p>

[0 <= n <1] + [1 <= n <10] = 10 + 9 = 19 </p>

Теперь у нас есть масштабируемая система. Давайте сделаем это с 2 цифрами, чтобы вы увидели, как это работает с несколькими цифрами, прежде чем мы go до 8 цифр. С 2 цифрами мы можем представить 0-99, а десятичная точка может go в трех разных местах, что означает, что у нас есть три диапазона для проверки: 0 <= n <1, 1 <= n <10, 10 <= п <100. Первый набор может иметь ноль на своем первом месте, так как ноль находится в наборе, но любой другой набор не может иметь ноль на первом месте, иначе число будет в наборе ниже него. Таким образом, первый набор имеет 10 <sup>2 возможностей, но каждый из остальных наборов имеет 9 * 10 1 возможностей. Мы можем обобщить это, сказав, что для любого числа d цифр, которое может содержать наш калькулятор, набор 0 <= n <1 будет иметь 10 <sup>d возможностей и каждый другой набор будет иметь 9 * 10 d-1 возможностей

Итак, для 2 цифр:

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

Теперь вы можете увидеть появление шаблона, который можно обобщить, чтобы дать нам общее количество уникальных чисел, которые могут отображаться на калькуляторе с d цифрами:

уникальные отображаемые числа = 10 d + d * 9 * 10 d-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 цифра ----
19
19
--- 2 цифры ----
280
280
--- 3 цифры ----
3700
3700
--- 4 цифры ----
46000
46000
--- 5 цифр ----
550000
550000

Это означает, что калькулятор с дисплеем 8 di git может отображать 820 000 000 уникальных чисел.

Для второй части этого ответа мы хотим знать если мы должны сделать все 4 базовых c операции между любой парой из 2 чисел, из вышеприведенного, сколько будет это операций?

Сколько пар чисел мы можем сделать между 820 миллион уникальных номеров? 820 млн. Кв. Это 672 400 000 000 000 000 = 672,4 квадриллиона. Для этих пар чисел можно использовать четыре различные операции, умножив их на 4, и вы получите 2 689 600 000 000 000 000 = 2,6896 квинтиллионов различных возможных операций на простом калькуляторе 8 ди git.

РЕДАКТИРОВАТЬ:

Если исходный вопрос состоял в том, чтобы десятичная точка не была допущена до первой ди git (десятичный 0 <= n <1 должен был бы начаться с <em> 0. ) тогда формула для отображаемых чисел изменится на 10 d + (d - 1) * 9 * 10 d- 1 , что означает, что количество уникальных отображаемых чисел составляет 730 миллионов , а общее число операций равно 2,1316 квинтиллионов .

...