Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_po_ostatochnym_znaniam (1).doc
Скачиваний:
7
Добавлен:
14.05.2015
Размер:
6.02 Mб
Скачать

Ещё пример задания:

Ниже записана программа. Получив на вход число , эта программа печатает два числа, и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 120.

var x, L, M: integer;

begin

readln(x);

L:=0; M:=1;

while x > 0 do begin

L:=L+1;

M:= M*(x mod 8);

x:= x div 8;

end;

writeln(L); write(M);

end.

Решение:

  1. для решения задачи необходимо понять, что делает эта программа; повторяя рассуждения из предыдущего примера, выясняем, что

    1. переменная Lс каждым шагом цикла увеличивается на 1

    2. переменная xна каждом шаге цикла делится на 8 и остаток отбрасывается

поэтому можно сделать вывод, что в конце цикла переменная Lбудет равнаколичеству цифрвведенного числа, записанного ввосьмеричнойсистеме счисления; таким образом, восьмеричная запись числа содержит ровно 3 цифры

  1. выражение x mod 8– это последняя цифра восьмеричной записи числа; на каждом шаге цикла переменнаяMумножается на эту величину, поэтому в результате вMбудет записанопроизведение всех цифрвосьмеричной записи введенного числа

  2. по условию это произведение равно 120, то есть , гдеa,bис – числа от 0 до 7 (которые в восьмеричной системе счисления записываются одной цифрой)

  3. поскольку нам нужно наибольшее число, перебираем делители числа 120, начиная со старшей цифры – 7; видим, что 120 на 7 не делится, поэтому такой цифры в восьмеричной записи числа нет

  4. но 120 делится на 6, поэтому старшей цифрой может быть 6 – только в том случае, когда второй сомножитель можно представить в виде произведения двух чисел в интервале 1..6

  5. делим 120 на 6, получаем 20; это число представляется как произведение 5 и 4, каждое из этих чисел записывается в виде одной восьмеричной цифры, то есть, они нам подходят

  6. вспомним, что нас интересует максимальное число, поэтому цифры нужно выстроить в порядке убывания: 6548

  7. заметим, что мы получили число в восьмеричной системе, а ответ нужно дать в десятичной; переводим: 6548= 6·82+ 5·81+ 4·80= 492.

  8. ответ: 492.

Возможные ловушки и проблемы:

  • поскольку в цикле идет деление на 8, мы получаем цифры числа в восьмеричной системе; каждая из них должна быть в интервале 0..7 (не может быть 8 и 9)

  • на последнем шаге нужно не забыть перевести число из восьмеричной системы в десятичную

Тема №21(время – 2 мин)

Тема: Кодирование чисел. Системы счисления.

Что нужно знать:

  • принципы кодирования чисел в позиционных системах счисления

  • чтобы перевести число, скажем, 12345N, из системы счисления с основаниемв десятичную систему, нужно умножить значение каждой цифры нав степени, равной ее разряду:

4 3 2 1 0 ← разряды

1 2 3 4 5N = 1·N4 + 2·N3 + 3·N2 + 4·N1 + 5·N0

  • последняя цифра записи числа в системе счисления с основанием – это остаток от деления этого числа на

  • две последние цифры – это остаток от деления на , и т.д.

Пример задания:

Запись числа 6710 в системе счисления с основанием N оканчивается на 1 и содержит 4 цифры. Укажите основание этой системы счисления N.

Решение:

  1. поскольку запись в системе счисления с основанием N заканчивается на 1, то остаток от деления числа 67 на N равен 1, то есть при некотором целом имеем

  1. следовательно, основание N – это делитель числа 66

  2. с другой стороны, запись числа содержит 4 цифры, то есть

  3. выпишем кубы и четвертые степени первых натуральных чисел, которые являются делителями числа 66:

  1. видим, что из этого списка только для числа N = 3 выполняется условие

  2. таким образом, верный ответ – 3.

  3. можно сделать проверку, переведя число 67 в троичную систему 6710 = 21113