Сложные задачи ЕГЭ 2011-15

advertisement
«По следам ЕГЭ-2011»:
сложные задачи
О.Б. Богомолова,
Д.Ю. Усенков
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Исполнитель
«Черепашка ЛОГО»
«Виртуальный
лист бумаги»
Y
Команды:
(0,0)
перемещение
поднять /
опустить перо
X
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Составлена программа для исполнителя:
алг чертеж
нач
вещ U, R, D
цел I, N
U = 0
R = 1
N = 50
D = 2 * PI / N
поднять перо
перейти в точку (____________)
опустить перо
нц для I от 1 до N
U = U + D
перейти в точку
(____________)
кц
кон
?
?
Что должно быть записано
на месте пропусков, чтобы
нарисовать линию, похожую
на окружность?
1) R, R
2) R * R, U * U
3) R * cos(U), R * sin (U)
4) R * sin(D), R * cos(D)
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Решение
Начальное значение
переменной U
алг чертеж
нач
вещ U, R, D
цел I, N
Переменная
I нигде больше
Вычисление
угла, не
U = 0
используется. N-й доле
соответствующего
R = 1
Значит, этотокружности
цикл используется
только
N = 50
для отсчета шагов
D = 2 * PI / N
отрисовки окружности
поднять перо
На каждом шаге цикла
перейти в точку (____________)
значение угла U
опустить перо
увеличивается на шаг D
нц для I от 1 до N
U = U + D
перейти в точку
(____________)
кц
кон
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Решение
алг чертеж
Тогда эти команды –
нач
выход Черепашки из точки (0, 0)
вещ U, R, D
в точку начала рисования
цел I, N
окружности (угол U = 0)
U = 0
R = 1
N = 50
D = 2 * PI / N
поднять перо
В цикле отрисовывается отрезок,
перейти в точку (____________)
примерно соответствующий
опустить перо
очередной дуге окружности
нц для I от 1 до N
U = U + D
перейти в точку
(____________)
кц
кон
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Решение
Вспоминаем геометрию…
Y
R cos(U)
?
R
U
(0,0)
R sin(U)
?
X
Координата X:
R * cos(U)
Координата Y:
R * sin(U)
РИСУЮЩАЯ «ЧЕРЕПАШКА»
Решение
Вспоминаем геометрию…
Y
R cos(U)
R sin(U)
R
U
(0,0)
X
Ответ:
3) R * cos(U), R * sin (U)
МАСКИРОВАНИЕ IP-АДРЕСА
По заданному IP-адресу и маске определить адрес сети.
IP-адрес: 17.240.120.15
Маска:
255.255.128.0
Решение
1) IP-адрес и маску надо представить как двоичные числа.
2) Подписав их друг под другом, провести поразрядную конъюнкцию
(операция «И»).
Биты IP-адреса, для которых в маске записан нуль, обнуляются;
остальные биты IP-адреса переписываются без изменения.
МАСКИРОВАНИЕ IP-АДРЕСА
Решение
IP-адрес: 17.240.120.15
Маска:
255.255.128.0
&
00010001.11110000.01111000.00001111
11111111.11111111.10000000.00000000
00010001 11110000 0000000 0 00000000
Ответ:
17.240.0.0
ПРИБАВЛЕНИЕ НУЛЕЙ
Имеется некоторое число, записанное в семиричной системе счисления.
К нему справа дописали три нуля. Во сколько раз увеличилось исходное
число в результате этой операции?
Решение
Дописывание нулей
в десятичной системе
счисления:
Дописывание нулей
в двоичной системе
счисления:
Было
Стало
Было
Стало
12345
123450
111 (= 7)
1110 (=14)
5432
543200
1010 (= 10)
101000 (= 40)
135
135000
1011 (= 11)
1011000 (= 88)
Правило
: дописывание
к числу
справа каждого
очередного
нуля
при дописывании
к числу,
записанному
в семиричной
системе
Ответ:
соответствует
этого это
числа
значение основания
счисления, умножению
трех нулей справа
числонаувеличится
системы
в 73 счисления.
= 343 раза.
РАСПЛЕТАЕМ ЦЕПОЧКИ
Из цифр формируются цепочки (строки) по следующему правилу:
• первая строка состоит из одной цифры 1;
• вторая строка состоит из двух цифр – 23;
• далее любая цепочка с номером n составляется из двух цепочек –
сначала переписывается цепочка с номером (n – 2), а потом
к ней дописывается цепочка с номером (n – 1).
Вот первые несколько таких строк:
(1) 1
(2) 23
(3) 123
(4) 23123
…
Сколько нечетных и сколько четных цифр будет в строке с номером 7?
РАСПЛЕТАЕМ ЦЕПОЧКИ
Решение
Числа
Фибоначчи
Распишем цепочки:
№ цепочки
(n)
Цепочка
Кол-во
четных
цифр
Кол-во
нечетных
цифр
1
1
0
1
2
23
1
1
3
123
1
2
4
23123
2
3
5
12323123
3
5
6
2312312323123
5
8
7
123231232312312323123
8
13
Ответ: четных чисел – 8, нечетных – 13.
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Определить, сколько различных решений имеет система уравнений:
( x1  x 2 )  ( x 2  x3 )  (x 2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x 4 )  ( x 4  x5 )  (x 4  x5 )  1;
 x1  x5  1.
Нужно указать именно количество решений системы уравнения,
а не записывать сами эти решения.
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Логическая операция «тождество»
(эквивалентность, логическое равенство)
Обозначения:
,~,
Таблица истинности:
A
B
AB
0
0
1
0
1
0
1
0
0
1
1
1
Правило: результат операции «тождество» (эквивалентность)
равен 1 тогда и только тогда, когда оба операнда
равны друг другу.
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Анализируем отдельные уравнения, входящие в систему.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
x1  x5  1
Операция «тождество»:
обе переменные – x1 и x5 – должны быть равны друг другу
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Анализируем остальные уравнения.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1
Операция «ИЛИ»: достаточно, чтобы был равен 1 хотя бы один операнд.
( x1  x2 )  1
x1 = 0, x2 = 0 или x1 = 1, x2 = 1
( x2  x3 )  1
x2 = 1, x3 = 1
(x2  x3 )  1
x2 = 0, x3 = 0
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Возможные комбинации значений переменных (x1, x2, x3):
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1
(0 0 0),
(0 1 1),
(0 0 0),
(0 0 1),
(1 1 1)
(1 0 0)
(1 1 0),
Если истинна вторая
часть уравнения,
значения остальных не
важны
Если истинна третья
часть уравнения,
значения остальных не
важны
(1 1 1)
Если истинна первая
часть уравнения,
значения остальных не
важны
Итого – 6 различных вариантов (x1, x2, x3):
(0 0 0), (0 0 1), (0 1 1), (1 1 0), (1 0 0), (1 1 1).
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Анализируем второе уравнение.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
( x1  x3 )  ( x3  x4 )  (x3  x4 )  1
Операция «ИЛИ»: достаточно, чтобы был равен 1 хотя бы один операнд.
( x1  x3 )  1
x1 = 0, x3 = 0 или x1 = 1, x3 = 1
( x3  x4 )  1
x3 = 1, x4 = 1
(x3  x4 )  1
x3 = 0, x4 = 0
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Возможные комбинации значений переменных (x1, x3, x4):
( x1  x3 )  ( x3  x4 )  (x3  x4 )  1
(0 0 0),
(0 1 1),
(0 0 0),
(0 0 1),
(1 1 1)
(1 0 0)
(1 1 0),
Если истинна вторая
часть уравнения,
значения остальных не
важны
Если истинна третья
часть уравнения,
значения остальных не
важны
(1 1 1)
Если истинна первая
часть уравнения,
значения остальных не
важны
Итого – тоже 6 различных вариантов (x1, x3, x4):
(0 0 0), (0 0 1), (0 1 1), (1 1 0), (1 0 0), (1 1 1).
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Анализируем третье уравнение.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
( x1  x4 )  ( x4  x5 )  (x4  x5 )  1
Операция «ИЛИ»: достаточно, чтобы был равен 1 хотя бы один операнд.
( x1  x4 )  1
x1 = 0, x4 = 0 или x1 = 1, x4 = 1
( x4  x5 )  1
x4 = 1, x5 = 1
(x4  x5 )  1
x4 = 0, x5 = 0
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Возможные комбинации значений переменных (x1, x4, x5):
( x1  x4 )  ( x4  x5 )  (x4  x5 )  1
(0 Все
0 0),
(0 0 0),
три первых
– типовые.
(0 1уравнения
1),
(1 0 0)
(0 0 1),
(1 1 1)
Поэтому
тройки значений
соответствующих
Если истинна третья
(1 1 0),
истинна
втораявсегда
переменных
вЕсли
них
будут
одни и те же,
часть уравнения,
часть уравнения,
(1 1 1)
значения остальных не
значения
не
сколько бы
ни остальных
было таких
уравнений!
важны
Если истинна первая
часть уравнения,
значения остальных не
важны
важны
Итого – еще 6 различных вариантов (x1, x4, x5):
(0 0 0), (0 0 1), (0 1 1), (1 1 0), (1 0 0), (1 1 1).
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
Сводим воедино результаты, полученные для каждого уравнения в
отдельности.
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
Объединение уравнений в систему означает, что все они
должны быть истинными одновременно.
= И (&)
АНАЛИЗ СИСТЕМЫ ЛОГИЧЕСКИХ УРАВНЕНИЙ
Решение
( x1  x2 )  ( x2  x3 )  (x2  x3 )  1;
( x  x )  ( x  x )  (x  x )  1;
 1
3
3
4
3
4

( x1  x4 )  ( x4  x5 )  (x4  x5 )  1;
 x1  x5  1.
Тогда в Впредпоследнем
этих вариантахуравнении
x1 = x34, нужно
тогда
уравнениивxнужно
нужно
оставить
оставить
которых
x 1 = x 5,
тогда во
в только
первом
уравнении
оставить
Ввтором
этих варианты,
вариантах
1 = x 2.
т.е. (x1варианты,
, x4, x5) =в(0
0 0) и (1
только
которых
x1 1=1).
x34,
Тогда в результате получается,
т.е. (x1, x23, x34) = (0 0 0) и (1 1 1).
что все переменные во всех уравнениях
должны быть равными:
x1 = x2 = x3 = x4 = x5
Ответ:
(x1, x2, x3, x4, x5) = (0 0 0 0 0) или (1 1 1 1 1),
т.е. возможно два решения данной системы уравнений.
ОБРАБОТКА МАССИВА
Дан массив из 30 целых чисел от -10 до 10.
Требуется найти максимум среди элементов массива, которые являются
простыми числами. (Один такой элемент в массиве точно есть.)
program simply_min;
Решение
const n=10;
var mas : array[1..n] of integer;
i, минимум
min : integer;
Как ищется простой
в массиве:
begin
for i:=1 to минимума
n do
1) в качестве предполагаемого
запоминаем в отдельной
read(mas[i]);
переменной (min
) значение самого первого элемента;
min:=mas[1];
2) запускаем цикл просмотра элементов массива со второго
for i:=2 to n do
до последнего;
if mas[i]<min then min:=mas[i];
3) на каждом шаге
цикла при помощи =условного
оператора проверяем:
writeln('Минимум
', min);
если текущий
элемент окажется меньше предполагаемого минимума,
end.
то перезапоминаем этот текущий элемент в переменной min ;
4) по завершении цикла в переменной min окажется искомый минимум.
ОБРАБОТКА МАССИВА
Решение
program simply_max;
Как ищется простой
constмаксимум
n=10; в массиве:
var mas : array[1..n] of integer;
1) в качестве предполагаемого
i, max : максимума
integer;запоминаем в отдельной
переменной (max
) значение самого первого элемента;
begin
for i:=1 элементов
to n do массива со второго
2) запускаем цикл просмотра
read(mas[i]);
до последнего;
3) на каждом шаге max:=mas[1];
цикла при помощи условного оператора проверяем:
for
to nбольше
do
если текущий элементi:=2
окажется
предполагаемого максимума,
if
mas[i]>max
then
то перезапоминаем этот текущий элемент вmax:=mas[i];
переменной max ;
writeln('Максимум = ', max);
4) по завершении цикла в переменной max окажется искомый максимум.
end.
ОБРАБОТКА МАССИВА
Решение
Как изменить программу, чтобы искать минимальный элемент,
program min_nechet;
обладающий определенным признаком (например, нечетный)?
const n=10;
var mas : array[1..n] of integer;
1) в условном операторе надо дописать
(через логическую
{элементы
= от -10функцию
до 10 }
and) условие
проверки
соответствия текущего элемента
i, min
: integer;
заданному
beginпризнаку;
for i:=1 to n do
2) так как самый
первый элемент может не соответствовать заданному
read(mas[i]);
признаку,
лучше (если известен возможный диапазон значений
min:=11;
элементов
предполагаемого минимума
forмассива)
i:=1 toв качестве
n do
задать константу,
заведомо
элемента массива;
if (mas[i]
mod большую
2 <> 0) любого
and (mas[i]<min)
цикл просмотра
элементов
нужно вести с первого до последнего.
then
min:=mas[i];
writeln('Минимум среди нечетных = ', min);
end.
ОБРАБОТКА МАССИВА
Решение
Аналогично ищется максимальный элемент, обладающий
program признаком.
max_nechet;
определенным
const n=10;
var mas : array[1..n] of integer;
1) в условном операторе надо дописать (через логическую функцию
{элементы = от -10 до 10 }
and) условие проверки соответствия текущего элемента
i, max : integer;
заданному признаку;
begin
for i:=1 to n do
2) так как самый первый элемент может не соответствовать заданному
read(mas[i]);
признаку, лучше (если известен возможный диапазон значений
max:=-11;
элементов массива) в качестве предполагаемого максимума
for i:=1 to n do
задать константу, заведомо меньшую любого элемента массива;
if (mas[i] mod 2 <> 0) and (mas[i]>max)
цикл просмотра элементов нужно вести с первого до последнего.
then max:=mas[i];
writeln('Максимум среди нечетных = ', max);
end.
ОБРАБОТКА МАССИВА
Решение
Как найти минимальный элемент, являющийся простым числом?
program min_prost;
const n=30;
var mas : array[1..n] of integer;
{элементы = число,
от -10 до 10 }
Простое число – натуральное
min ровно
: integer;
которое i,
имеет
два различных натуральных делителя:
begin
единицу и самого себя.
for i:=1 to n do
read(mas[i]);
min:=11;
i:=1 to
n do чисел немного: 2, 3, 5 и 7.
В заданномfor
диапазоне
простых
if ((mas[i]=2) or (mas[i]=3) or (mas[i]=5)
(mas[i]=7))
and путем
(mas[i]<min)
Поэтому достаточноor
реализовать
проверку
сравнения элемента
then
min:=mas[i];
массива с каждым
из этих
значений (логическая операция ИЛИ).
writeln('Минимум среди простых = ', min);
end.
Download