Книга: Рассказы о математике с примерами на языках Python и C
Отгадывание чисел
Отгадывание чисел
Есть другой фокус с отгадыванием чисел. Попросим человека загадать трехзначное число, числа в котором идут в порядке уменьшения (например 752). Попросим человека выполнить следующие действия:
? записать число в обратном порядке (257)
? вычесть его из исходного числа (752 - 257 = 495)
? к ответу добавить его же, только в обратном порядке (495 + 594)
Получится число 1089, которое «фокусник» и объявляет публике.
Математически это тоже несложно доказать.
? Любое число вида abc в десятичной системе счисления представляется так:
abc = 100 * a + 10 * b + c.
? Разность чисел abc - cba:
100 * a + 10 * b + c + 100 - 100 * c - 10 * b - a = 100 * a - 100 * c - (a - c) = 100 * (a - c) - (a - c)
? Т. к. по условию a - c > 0, то результат можно записать в виде:
100 * (a - c) - (a - c) = 100 * (a - c) - 100 + 90 + 10 - (a - c) = 100 * (a - c - 1) + 10 * 9 + (10 - a + c)
Мы узнали разряды числа, получающегося в результате:
a1 = a - c - 1, b1 = 9, c1 = 10 - a + c
? Добавляем число в обратном порядке:
a1b1c1 + c1b1a1 = 100 * (a - c - 1) + 10 * 9 + (10 - a + c) + 100* (10 - a + c) + 10 * 9 + a - c - 1
Если раскрыть все скобки и сократить лишнее, в остатке будет 1089.
- Отгадывание результата
- 5.3. Округление чисел с плавающей точкой
- Использование различных форматов чисел
- ФУНКЦИЯ ПОЛУЧЕНИЯ ЦЕЛЫХ ЧИСЕЛ: getint( )
- Листинг А.4. (number.c) Арифметика унарных чисел
- 2.3. Представление чисел в компьютере
- 18.2.1. Получение истинно случайных чисел из Web
- Форматирование чисел
- Листинг 4.4. (primes.с) Вычисление простых чисел в потоке
- Приложение Б Генератор случайных чисел ядра
- Листинг 5.4. Код программы нахождения простых чисел, предназначенный для выполнения фоновым потоком
- Выводы по алгоритмам генерации случайных чисел