Головоломка с числами.


Много лет назад, когда я учился в школе (а было это в застойные годы), на очередном скучном комсомольском собрании я придумал себе для развлечения математическую задачку - попробовать получить формулу для каждого числа от нуля до ста включительно путем расстановки знаков математических операций (плюс, минус, умножить, разделить) и скобок между цифрами номера моего комсомольского билета: 56279867. Поскольку наша школа была математической, а делать на собрании было больше нечего, к решению этой задачки подключились мои непосредственные соседи, которые сидели рядом со мной. Для некоторых чисел комбинации математических операций и скобок были получены достаточно быстро, например 5 + 6 + 2 + 7 + 9 + 8 + 6 + 7 = 50 или 5 + 6 + (2 + 7 + 9 - 8) * (6 - 7) = 1, однако для других чисел это оказалось не так просто. Более того, было неясно, имеет ли эта задача решение.

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

(5 + (((6 + (2 + (7 - (9 + 8)))) * 6) + 7))=0
(5 + (6 + ((2 + (7 + (9 - 8))) * (6 - 7))))=1
((5 + (((6 + (2 + (7 + 9))) / 8) + 6)) / 7)=2
(5 + (6 + (2 + (7 + ((9 + 8) * (6 - 7))))))=3
(5 + (6 + (2 + ((7 - (9 + (8 + 6))) + 7))))=4
(5 + (6 + (2 + ((7 + (9 - 8)) * (6 - 7)))))=5
(5 + (6 + (2 + ((7 - 9) + (8 - (6 + 7))))))=6
(5 + (((6 + (2 + (7 + 9))) / 8) + (6 - 7)))=7
(5 + (6 + (2 + (7 + (9 - (8 + (6 + 7)))))))=8
(5 + ((((6 + (2 + (7 + 9))) / 8) - 6) + 7))=9
(5 + (6 + (2 + (((7 + (9 + 8)) / 6) - 7))))=10
((5 + (6 + (2 + (7 + (9 + (8 * 6)))))) / 7)=11
(5 + (6 + ((((2 + (7 - 9)) * 8) - 6) + 7)))=12
(5 + (6 + ((2 + (7 + (9 + 8))) / (6 + 7))))=13
((5 + (6 + (2 + (7 + ((9 * 8) + 6))))) / 7)=14
(5 + (6 + (2 + ((7 + ((9 - 8) + 6)) / 7))))=15
(5 + (6 + (2 + ((((7 + 9) / 8) - 6) + 7))))=16
(5 + (((6 + (2 + (7 + 9))) / (8 + 6)) * 7))=17
((5 + (6 + (2 + (7 + (9 - 8))))) * (6 / 7))=18
(5 + (6 + (2 + (7 + ((9 - 8) * (6 - 7))))))=19
(5 + (6 + (2 + (7 + ((9 - 8) + (6 - 7))))))=20
(5 + (6 + (2 + (7 + (9 + (8 * (6 - 7)))))))=21
(5 + (6 + (2 + (7 + ((9 - (8 + 6)) + 7)))))=22
((5 + (6 + (((2 + (7 + 9)) * 8) + 6))) / 7)=23
(5 + (6 + (2 + (7 + (9 + (8 - (6 + 7)))))))=24
(5 + (6 + (2 + (7 + ((9 * (8 / 6)) - 7)))))=25
(5 + ((6 + (2 + (7 - (9 * (8 / 6))))) * 7))=26
(5 + (6 + (2 + ((7 + (9 - (8 + 6))) * 7))))=27
(5 + (6 + (((2 + (7 + 9)) * (8 / 6)) - 7)))=28
((5 + (((6 + (2 + (7 + 9))) * 8) + 6)) / 7)=29
(5 + (((6 + (2 + (7 + 9))) * (8 / 6)) - 7))=30
(5 + (6 + (2 + (7 + (9 + ((8 + 6) / 7))))))=31
(5 + (6 + (2 + ((7 + (9 * (8 + 6))) / 7))))=32
(5 + (6 + (2 + (7 + ((9 - 8) * (6 + 7))))))=33
(5 + (6 + (2 + (7 + ((9 - 8) + (6 + 7))))))=34
((5 + (6 + (((2 + (7 - 9)) * 8) - 6))) * 7)=35
(5 + (6 + (2 + (7 + (9 + (8 + (6 - 7)))))))=36
(5 + (6 + (2 + (7 + (9 - (8 * (6 - 7)))))))=37
(5 + (6 + (2 + (7 + (9 + ((8 - 6) + 7))))))=38
(5 + (6 + ((2 + (7 + (9 - (8 + 6)))) * 7)))=39
(5 + (6 + (((2 + (7 + 9)) * (8 - 6)) - 7)))=40
(5 + (6 + (2 + (((7 + (9 + 8)) / 6) * 7))))=41
(5 + (6 + (((2 + (7 + 9)) * (8 / 6)) + 7)))=42
(5 + (6 + (2 + (7 + (9 + ((8 - 6) * 7))))))=43
(5 + (((6 + (2 + (7 + 9))) * (8 / 6)) + 7))=44
(5 + (6 + (2 + ((7 + 9) * ((8 + 6) / 7)))))=45
(5 + (((6 + (2 + (7 + 9))) * (8 - 6)) - 7))=46
(5 + (6 + ((2 + (7 + 9)) * ((8 + 6) / 7))))=47
(5 + (((6 + ((2 + (7 - 9)) * 8)) * 6) + 7))=48
((5 + (6 + (2 + (((7 * 9) - 8) * 6)))) / 7)=49
(5 + (6 + (2 + (7 + (9 + (8 + (6 + 7)))))))=50
(((5 + (6 + (2 + (7 + 9)))) * (8 - 6)) - 7)=51
(5 + (6 + (2 + (((7 + 9) * (8 - 6)) + 7))))=52
(5 + (6 + ((2 + ((7 + (9 + 8)) / 6)) * 7)))=53
(5 + (6 + (2 + (((7 + (9 - 8)) * 6) - 7))))=54
(((5 + ((6 + (2 + (7 + 9))) / 8)) * 6) + 7)=55
(5 + ((6 + ((2 + (7 + 9)) / (8 + 6))) * 7))=56
(5 + (6 + (2 + (((7 + 9) / 8) + (6 * 7)))))=57
((5 + (6 + (2 + (7 + 9)))) * ((8 + 6) / 7))=58
(5 + ((6 + (2 + (7 - 9))) * ((8 - 6) + 7)))=59
(5 + (((6 + (2 + (7 + 9))) * (8 - 6)) + 7))=60
(5 + (6 + (2 + ((7 - 9) + (8 + (6 * 7))))))=61
(5 + (6 + (2 + (7 + ((9 - 8) * (6 * 7))))))=62
(5 + (6 + (2 + (7 + ((9 - 8) + (6 * 7))))))=63
(5 + (6 + (((2 + (7 + (9 - 8))) * 6) - 7)))=64
(((5 + (6 + (2 + (7 + 9)))) * (8 - 6)) + 7)=65
(5 + (6 + (2 + ((7 - 9) + ((8 * 6) + 7)))))=66
(5 + ((6 + (2 + (((7 * 9) + 8) * 6))) / 7))=67
(5 + (6 + (2 + (((7 + (9 - 8)) * 6) + 7))))=68
(5 + (6 + (2 + (7 + (((9 - 8) + 6) * 7)))))=69
(5 + (6 + (2 + (7 + (9 + ((8 * 6) - 7))))))=70
((5 + (6 + ((2 + (7 + (9 * 8))) * 6))) / 7)=71
(5 + (((6 + (2 + ((7 + 9) / 8))) * 6) + 7))=72
(((5 + (6 + ((2 + (7 - 9)) * 8))) * 6) + 7)=73
(5 + (6 + ((2 + (7 + (9 * (8 * 6)))) / 7)))=74
(5 + ((6 + (2 + (7 + (9 - (8 + 6))))) * 7))=75
(((5 + (6 + (2 + 7))) * 9) - (8 * (6 + 7)))=76
((5 + (6 + (2 + (7 - 9)))) * (8 + (6 - 7)))=77
(5 + (6 + (((2 + (7 + (9 - 8))) * 6) + 7)))=78
(5 + (6 + (2 + (7 + (9 + (8 + (6 * 7)))))))=79
((5 + (6 + (2 + 7))) * (9 + (8 - (6 + 7))))=80
(5 + (6 + ((2 + (((7 + 9) / 8) + 6)) * 7)))=81
(5 + (((6 + (2 + ((7 - 9) + 8))) * 6) - 7))=82
(5 + (6 + (2 + (7 + (9 * (8 + (6 - 7)))))))=83
(5 + (6 + (2 + (7 + (9 + ((8 * 6) + 7))))))=84
(5 + (6 + (2 + ((7 * 9) + ((8 - 6) + 7)))))=85
((5 + (6 + ((2 + (7 + 9)) / (8 + 6)))) * 7)=86
(((5 + (6 + (2 + (7 - 9)))) * 8) + (6 - 7))=87
(5 + (((6 + (2 + 7)) * ((9 - 8) * 6)) - 7))=88
(5 + ((6 + (2 + ((7 + (9 + 8)) / 6))) * 7))=89
((5 + (6 + (2 + ((7 - 9) / (8 + 6))))) * 7)=90
(5 + (6 + (2 + (7 + ((9 * 8) + (6 - 7))))))=91
(5 + (6 + (2 + (7 - (9 * (8 * (6 - 7)))))))=92
(5 + (6 + (2 + (7 + (((9 * 8) - 6) + 7)))))=93
(5 + (((6 + (2 + (7 + (9 - 8)))) * 6) - 7))=94
(5 + (6 + (2 + (7 + (9 * ((8 / 6) + 7))))))=95
(5 + (((6 + (2 + ((7 - 9) + 8))) * 6) + 7))=96
(5 + (6 + (2 + (7 + ((9 + (8 - 6)) * 7)))))=97
((5 + (((6 + (2 + (7 + 9))) / 8) + 6)) * 7)=98
(5 + (6 + (2 + (((7 + 9) * 8) - (6 * 7)))))=99
(5 + (6 + (((2 + 7) * 9) - (8 * (6 - 7)))))=100
    

Вернуться

Домой
Домой

Hosted by uCoz