Версия для печати темы
Форум «Всё о Паскале» _ Математика _ Задачка СС
Автор: Unconnected 11.03.2011 23:36
Привет всем. Учусь делать всякие операции с СС, попалась такая задача с разбором:
[attachmentid=9588]
Ну я ж решил себя проверить, и вместо 8-чной, как в разборе, перевёл 101 в 4-ричную (114), и тоже составил уравнение.
x=1*40 + 1*4+a*16. Дальше не беру, т.к. следующая степень точно превысит 25. Для этого случая подходят a=0,1. То есть, решения 5, 21. А 13 нет. В чем подвох?
Автор: volvo 12.03.2011 0:05
Цитата
А 13 нет
А 13
10 = 31
4, это не заканчивается на 11...
Автор: Unconnected 12.03.2011 0:15
А в двоичном это 1101, что удовлетворяет условию.. как-то странно получается)
Автор: volvo 12.03.2011 0:18
"Не все йогурты СС одинаково полезны" (почти С)
Все-таки, лучше переводить в такую СС, чтобы искомой была одна цифра.
Автор: Unconnected 12.03.2011 0:28
Во дела.. ну я подозревал такое, но всё же казалось, что решаться должно универсально) Спасибо, запомню.
Автор: Lapp 12.03.2011 6:46
Цитата(Unconnected @ 11.03.2011 20:28)
казалось, что решаться должно универсально)
Вот именно, _должно_ (по возможности, конечно).
Приведенное в разборе решение вообще безобразное.
Интересно, а если задача стояла бы так: "Найти все (десятичные) числа, заканчивающиеся на 101 и не превосходящие 1234" - они что, стали бы переходить в 1000-ричную систему счисления??
Не надо никуда переходить. Искомые числа имеют вид:
n*1000
2 + 101
2Это же, но в десятичной записи:
n*8 + 5
Вот и все.
А все слова "для удобства" должны сопровождаться доказательством того, что это не вредит решению.
Задача: купить буханку хлеба.
Решение: так, магазин через дорогу; для удобства не будем тащиться к перекрестку, а перейдем прямо тут.. ...
Автор: Unconnected 12.03.2011 18:01
Цитата
Не надо никуда переходить. Искомые числа имеют вид:
n*10002 + 1012
Почему взято именно 1000
2 (8) ? Я так понял, потому, что при любом n в конце будет 3 нуля и при прибавлении 101 будет оканчиваться на 101, да?
Автор: unic 13.03.2011 0:56
Вот набросал общий вид решения подобных вещей , возможно способ и ошибочный , тк придумал на ходу исходя из "воспоминаний" и формулы предоставленной Lapp .
Автор: Lapp 13.03.2011 10:46
Цитата(Unconnected @ 12.03.2011 14:01)
Почему взято именно 10002 (8) ? Я так понял, потому, что при любом n в конце будет 3 нуля и при прибавлении 101 будет оканчиваться на 101, да?
Да, именно так.
И наоборот - если число заканчивается на 101, то после вычитания 101 оно будет иметь в конце 000, то есть подходит под эту запись. Таким образом, это необходимое и достаточное (то есть эквивалентное) условие.
Добавлено через 5 мин. Цитата(unic @ 12.03.2011 20:56)
Вот набросал общий вид решения подобных вещей , возможно способ и ошибочный , тк придумал на ходу исходя из "воспоминаний" и формулы предоставленной Lapp .
Я только не понял, что за наезд ты имеешь в виду. Просьба в теме писать только по теме.
Автор: unic 13.03.2011 15:31
Lapp , алгоритм решения правильный ?
Автор: Lapp 13.03.2011 16:35
Цитата(unic @ 13.03.2011 11:31)
Lapp , алгоритм решения правильный ?
Алгоритма не вижу, вижу перебор (который, впрочем, тут вполне годится). Если хочешь алгоритм, то так:
...
n*8 + 5 <= 25
n <= [(25-5)/8] (это учитывая, что n - целое)
n <= 2
С другой стороны, числа подразумеваются натуральными, то есть
n*8 + 5 > 0
n > - 5/8 = -0.625
Пересечение этих условий дает результат:
0 <= n <= 2
Выписываем явно:
n = 0, 1, 2 .
Подставляя обратно в формулу, имеем:
8*0 + 5 = 5
8*1 + 5 = 13
8*2 + 5 = 21
Эти три числа и являются ответом.
Автор: Unconnected 15.03.2011 5:21
Спасибо всем, систему понял