9 9 9 9 равно 100 как решить
Перейти к содержимому

9 9 9 9 равно 100 как решить

  • автор:

Как между 9 9 9 9 расставить знаки, чтобы получилось 100,10,810,11?

Сразу видно: началась школа, пошли математические вопросики. Недавно мы решали, что делать с двойками, теперь разберемся с девятками.

1) Ну, с сотней проще всего, даже думать не надо: 9:9+99=100.

2) Десятка. Чуток сложнее, но несложно, а именно: (99-9):9 = 10. Но здесь придется брать в скобки.

3) 810. В принципе, тоже самое, что и пунктом выше, только вместо деления рисуем умножение: (99-9)*9=810.

4) И вот самое сложное задание: получить одиннадцать. Опять же, возьмем в скобки только одну часть (потому что , если в скобки возьмем две части, то результат будет иной), и используем только сложение и деление: (9+9):9+9 =11.

9 9 9 9 равно 100 как решить

В сборнике занимательных задач часто встречается одна старая головоломка, хотя решение ее давно известно. Состоит она в следующем.

Требуется так расставить знаки арифметических действий между цифрами от 1 до 9, чтобы в результате получилось выражение, дающее число 100. Цифры должны располагаться по порядку, переставлять их не разрешается. Задача имеет сотни решений, простейшее из них выглядит так:

1 + 2 + 3 + 4 + 5 + 6 + 7 + (8 * 9) = 100

Задача становится намного труднее и интереснее, если знаки арифметических действий ограничены плюсом и минусом. Решений в этом случае также много, например:

1 + 2 + 34 — 5 + 67 — 8 + 9 = 100

12 + 3 — 4 + 5 + 67 + 8 + 9 = 100

123 — 4 — 5 — 6 — 7 + 8 — 9 = 100

123 + 4 — 5 + 67 — 89 = 100

123 + 45 — 67 + 8 — 9 = 100

123 — 45 — 67 + 89 = 100

«Последнее решение особенно просто, — писал Генри Э. Дьюдени, — и я не думаю, что его когда-нибудь удастся улучшить».

Если учесть популярность задачи, то нельзя не удивляться тому, что «обратная» ей головоломка привлекает столь мало внимания, Под «обратной» я понимаю следующую задачу. Цифры расставлены в порядке убывания от 9 до 1. Требуется расставить наиболее экономным способом знаки плюс и минус так, чтобы получилось выражение, равное 100.

Project g20_8 Module Main ' Головоломка "20.8 Как получить число 100 из цифр от 1 до 9" ' http://np-soft.ru/npproject/projects/puzzles/gardner/20/g8.htm ' Для результата нужно взять F.Value со знаком Sign, для которых Sign <> 0 Con Ins As ' Создаем цифры 9, 8, . 1 ForAll(d In 1..9>, Append(F, Me : d, Digit : 10 - d)) Con Equ As ' Сумма выражения равна 100 Sum(d In F, d.Sign * d.Value) = 100 Con Opt As ' Требуется минимизировать количество операция Minimize(Sum(d In F, d.Lead=0, d.Sign <> 0)) Class F ' Цифра Field Digit As Integer ' собственно цифра ' Если Sign = 1, то знак + ' Если Sign = -1, то знак - ' Если Sign = 0, то знака нет Var Sign As If(Me = Last, -1,1>, -1..1>) Var Value As 0..99999> ' Значение числа ' Первое число (лидирующее) в выражение - исключение,  ' т. к. знак для него всегда +, который "опущен" Var Lead As If(Me=1, 1>, 0..1>) ' Флажок лидирующего числа Con Deps As Dep(Lead, Value) Con CalcValue As ' Вычисление выражение, в зависимости от того, ' есть знак между цифрами или нет Value = If(Me = 1 Or Previous.Sign <> 0, 0, 10*Previous.Value) + Digit Con CalcLead As ' "Вычисление" лидирующего флажка Me > 1 ==> Lead = ((Previous.Lead=1) And Previous.Sign=0) Con TruncSign As ' Перед первой цифрой не может стоять минус Lead = 1 ==> Sign >=0

9 9 9 9 равно 100 как решить

Никак. Девять на девять не делится,ЧТО БЫ ПОЛУЧИТЬ ЕДИНИЦУ.Математика ваша,сама по себе абстракция и ничего общего с реальностью не имеющее оболванивание.

Поделиться
Виктор Кузнецов

Математика убивает жизнь, ведь это механизм, и если разум забит цифрами, то эти люди уже мертвы, они несут смерть человечеству и обманы.

Поделиться
Юрий Барденков

99+9/9 это просто, а как с помощью этих девяток и мат. действий получить 774840978

Поделиться
Алексей Малахов

99+9/9 (напоминаю что деление выполняется раньше сложения).

Поделиться
Наталия Астраханка
Александр Михалёв

разделить и прибавить. Второй класс средней школы.

Поделиться
Ali Agasiyev

9 9 + 9 / 9=100 �� �� �� �� �� ❄️��

Как сделать из 123456789 число 100 или 0

В «Занимательной арифметике» известного популяризатора наук Якова Исидоровича Перельмана в конце первой главы я нашел пример следующих «Арифметических курьезов»:

100 = 1+2+3+4+5+6+7+8*9
100 = 12+3-4+5+67+8+9
100 = 12-3-4+5-6+7+89
100 = 123+4-5+67-89
100 = 123-45-67+89

Первое из этих решений я нашел еще в начальной школе на олимпиаде по математике, и теперь подумав, что, может быть, та победа повлияла на мое будущее становление, я решил воздать должное этой задаче и найти все возможные решения, написав соответствующий скрипт на Python.

Пусть задача поставлена так: есть строка цифр 123456789 (пусть я и правда не очень интересуюсь нулем), между которыми можно в любых местах поставить 4 арифметических операции (+, -, *, /) или не ставить ничего (то есть ставить пустую строку, тогда образуются двух- и более -значные числа) так, чтобы общее выражение давало в результате 100, как в примерах из книги выше. Ничего другого нельзя, никаких скобок, никаких перестановок, никаких дублей, никаких выкидываний.

Я не учился программированию, и реализовал задачу, как придумал. Поэтому у меня есть вопрос: «Как это можно было сделать лучше?».

А придумал я так: для того чтобы перебрать все возможные варианты вставки символов промежутков (а их пять: либо пустая строка, либо +, -, *, /), я представлял их как варианты числа по основанию 5, дополненные слева нулями. Длина такого числа восемь символов, поскольку цифр девять, и между ними тогда имеется восемь промежутков. Нули соответствуют пустым строкам, все остальные — арифметическим операциям. Вот что получилось:

Copy Source | Copy HTML
from __future__ import division # for 2.x version

s = ‘123456789’
d = < '0' : '' , '1' : '+' , '2' : '-' , '3' : '*' , '4' : '/' >
sum_num = 100
count = 0

def to_new_base (n, new_base):
s = []
if n == 0 :
s.append( ‘0’ )
while n:
s.append(str(n % new_base))
n = n // new_base
num = ‘8>’ .format( » .join(s[::- 1 ]))
return num

for n in xrange(int( ‘44444444’ , 5 )):
num = to_new_base (n, 5 )
expr = »
for i, j in zip(s, num):
expr += i + d[j]
expr += ‘9’
if eval(expr) == sum_num:
print ( ‘ = ‘ .format(expr, sum_num))
count += 1

print ‘So, expressions for ‘ .format(count, sum_num)

Для 100 нашлось 101 такое решение, причем некоторые из них довольно забавные, особенно с дробями:

123+45-67+8-9 = 100
123+4-5+67-89 = 100
123+4*5-6*7+8-9 = 100
123-45-67+89 = 100
123-4-5-6-7+8-9 = 100
12+34+5*6+7+8+9 = 100
12+34-5+6*7+8+9 = 100
12+34-5-6+7*8+9 = 100
12+34-5-6-7+8*9 = 100
12+3+4+5-6-7+89 = 100
12+3+4-56/7+89 = 100
12+3-4+5+67+8+9 = 100
12+3*45+6*7-89 = 100
12+3*4+5+6+7*8+9 = 100
12+3*4+5+6-7+8*9 = 100
12+3*4-5-6+78+9 = 100
12-3+4*5+6+7*8+9 = 100
12-3+4*5+6-7+8*9 = 100
12-3-4+5-6+7+89 = 100
12-3-4+5*6+7*8+9 = 100
12-3-4+5*6-7+8*9 = 100
12*3-4+5-6+78-9 = 100
12*3-4-5-6+7+8*9 = 100
12*3-4*5+67+8+9 = 100
12/3+4*5-6-7+89 = 100
12/3+4*5*6-7-8-9 = 100
12/3+4*5*6*7/8-9 = 100
12/3/4+5*6+78-9 = 100
1+234-56-7-8*9 = 100
1+234*5*6/78+9 = 100
1+234*5/6-7-89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+56/7+8*9 = 100
1+23-4+5+6+78-9 = 100
1+23-4-5+6+7+8*9 = 100
1+23*4+56/7+8-9 = 100
1+23*4+5-6+7-8+9 = 100
1+23*4-5+6+7+8-9 = 100
1+2+34-5+67-8+9 = 100
1+2+34*5+6-7-8*9 = 100
1+2+3+4+5+6+7+8*9 = 100
1+2+3-45+67+8*9 = 100
1+2+3-4+5+6+78+9 = 100
1+2+3-4*5+6*7+8*9 = 100
1+2+3*4-5-6+7+89 = 100
1+2+3*4*56/7-8+9 = 100
1+2+3*4*5/6+78+9 = 100
1+2-3*4+5*6+7+8*9 = 100
1+2-3*4-5+6*7+8*9 = 100
1+2*34-56+78+9 = 100
1+2*3+4+5+67+8+9 = 100
1+2*3+4*5-6+7+8*9 = 100
1+2*3-4+56/7+89 = 100
1+2*3-4-5+6+7+89 = 100
1+2*3*4*5/6+7+8*9 = 100
1-23+4*5+6+7+89 = 100
1-23-4+5*6+7+89 = 100
1-23-4-5+6*7+89 = 100
1-2+3+45+6+7*8-9 = 100
1-2+3*4+5+67+8+9 = 100
1-2+3*4*5+6*7+8-9 = 100
1-2+3*4*5-6+7*8-9 = 100
1-2-34+56+7+8*9 = 100
1-2-3+45+6*7+8+9 = 100
1-2-3+45-6+7*8+9 = 100
1-2-3+45-6-7+8*9 = 100
1-2-3+4*56/7+8*9 = 100
1-2-3+4*5+67+8+9 = 100
1-2*3+4*5+6+7+8*9 = 100
1-2*3-4+5*6+7+8*9 = 100
1-2*3-4-5+6*7+8*9 = 100
1*234+5-67-8*9 = 100
1*23+4+56/7*8+9 = 100
1*23+4+5+67-8+9 = 100
1*23-4+5-6-7+89 = 100
1*23-4-56/7+89 = 100
1*23*4-56/7/8+9 = 100
1*2+34+56+7-8+9 = 100
1*2+34+5+6*7+8+9 = 100
1*2+34+5-6+7*8+9 = 100
1*2+34+5-6-7+8*9 = 100
1*2+34-56/7+8*9 = 100
1*2+3+45+67-8-9 = 100
1*2+3+4*5+6+78-9 = 100
1*2+3-4+5*6+78-9 = 100
1*2+3*4+5-6+78+9 = 100
1*2-3+4+56/7+89 = 100
1*2-3+4-5+6+7+89 = 100
1*2-3+4*5-6+78+9 = 100
1*2*34+56-7-8-9 = 100
1*2*3+4+5+6+7+8*9 = 100
1*2*3-45+67+8*9 = 100
1*2*3-4+5+6+78+9 = 100
1*2*3-4*5+6*7+8*9 = 100
1*2*3*4+5+6+7*8+9 = 100
1*2*3*4+5+6-7+8*9 = 100
1*2*3*4-5-6+78+9 = 100
1*2/3+4*5/6+7+89 = 100
1/2*34-5+6-7+89 = 100
1/2*3/4*56+7+8*9 = 100
1/2/3*456+7+8+9 = 100

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

Copy Source | Copy HTML
figure = <>
xlist = []
ylist = []

def func ():
for n in range(int( ‘44444444’ , 5 )):
num = to_new_base(n, 5 )
expr = »
for i, j in zip(line, num):
expr += i + d[j]
expr += ‘9’
num_sum = eval(expr)
if num_sum in figure:
figure[num_sum] += 1
else :
figure[num_sum] = 1

for key in sorted(figure):
xlist.append(key)
ylist.append(figure[key])

Списки зависимости ylist=f(xlist) рисуются с помощью matplotlib. Зависимость имеет пик в нуле со 167 решениями:

Левая ветвь не симметрична правой, потому что перед вариантом 1*2*3*4*5*6*7*8*9 по условию задачи минус мы поставить не можем. Чем ближе к нулю, тем чаще встречаются действительные числа, которые можно представить несколькими возможными способами.

Отдельное рассмотрение для решений в области [-1.1, 1.1]: наибольшее число решений приходится, собственно, на ноль, потом на целые числа -1, 1, потом на полуцелые -0.5, 0.5.

Проверено, что любое из целых чисел от 0 до 100 может быть выражено таким способом:

Может быть, эта задача понравится и просто, чтобы задать кому-то, например собственному ребенку или приятелю, на скорость счета и умение обращаться с числами, как когда-то мне она была задана в начальной школе и нужно было найти одно решение, хотя, как я теперь вижу, их было намного больше. А можете попробовать сами в уме или на бумаге найти хотя бы одно из 167 решений для нуля.

UPD: Не подумайте, что все эти графики это что-то серьезное. Здесь нет ничего серьезного, кроме постановки задачи, кода и предложения питонистам попробовать написать что-то более быстрое.

UPD2: Отличный вариант улучшения кода был написан в комментарии hellman

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *