СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ
Благодаря готовым учебным материалам для работы в классе и дистанционно
Скидки до 50 % на комплекты
только до
Готовые ключевые этапы урока всегда будут у вас под рукой
Организационный момент
Проверка знаний
Объяснение материала
Закрепление изученного
Итоги урока
ШКОЛЬНЫЙ ЭТАП ВСЕРОССИЙСКОЙ ОЛИМПИАДЫ ШКОЛЬНИКОВ
ПО ИНФОРМАТИКЕ
2018-2019 УЧЕБНЫЙ ГОД
В доме девять этажей, но лифт сломался, и теперь в нём работают только две кнопки. Нажатие на первую кнопку приводит к тому, что лифт поднимается на пять этажей вверх, а при нажатии на вторую кнопку лифт спускается на три этажа вниз. Подниматься выше девятого этажа или спускаться ниже первого этажа нельзя, ходить по лестнице тоже нельзя. Как подняться с первого этажа на девятый?
В игре «Камень, ножницы, бумага» двое игроков одновременно показывают при помощи руки один из трёх условных символов – «камень», «ножницы» или «бумага». Игрок выигрывает, если он показал камень, а его противник – ножницы («камень тупит ножницы»), если он показал ножницы, а его противник – бумагу («ножницы режут бумагу»), если он показал бумагу, а его противник – камень («бумага накрывает камень»). Если два игрока показали одинаковые символы, то игра заканчивается вничью.
Алёша и Боря сыграли в эту игру девять раз. Алёша два раза показал камень, три раза – ножницы, четыре раза – бумагу. Боря три раза показал камень, четыре раза – ножницы, два раза – бумагу, но порядок, в котором они показывали эти символы, неизвестен. Определите, какое наибольшее число раз мог выиграть Алёша. А какое наибольшее число раз мог выиграть Боря? Объясните свой ответ.
Три вора – Камнев, Ножницын и Бумагин хотят переправиться через реку. У каждого вора два больших баула. В лодке три места, одно место занимает один человек или один баул. Грести умеет только Камнев. При этом если Камнев останется в лодке или на берегу с баулом Ножницына и Ножницына не будет рядом, то Камнев обчистит баул Ножницына. Аналогично Ножницын обчистит баул Бумагина в его отсутствие, а Бумагин обчистит баул Каменева в его отсутствие. Как им переправиться на другой берег? Опишите алгоритм их действий.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 10, при этом число гирек в наборе должно быть как можно меньше. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться. Объясните, как любую массу от 1 до 10 граммов можно взвесить при помощи предложенного набора.
Вам нужно умножить некоторое большое число X на 15. У вас есть калькулятор, но на калькуляторе сломались все кнопки операций, кроме сложения. Поэтому вы можете только складывать разные числа (например, можно сложить число X и число X, тогда получится 2X, затем можно сложить число 2X и 2X и получится 4X, а можно сложить 2X и X и получится 3X, то есть можно складывать любые ранее полученные числа между собой). Определите, при помощи какого минимального числа сложений можно получить число 15X. Приведите последовательность операций, при помощи которых можно получить число 15X за указанное число сложений.
В доме девять этажей, но лифт сломался, и теперь в нём работают только две кнопки. Нажатие на первую кнопку приводит к тому, что лифт поднимается на пять этажей вверх, а при нажатии на вторую кнопку лифт спускается на три этажа вниз. Подниматься выше девятого этажа или спускаться ниже первого этажа нельзя, ходить по лестнице тоже нельзя. Как подняться с первого этажа на девятый?
В игре «Камень, ножницы, бумага» двое игроков одновременно показывают при помощи руки один из трёх условных символов – «камень», «ножницы» или «бумага». Игрок выигрывает, если он показал камень, а его противник – ножницы («камень тупит ножницы»), если он показал ножницы, а его противник – бумагу («ножницы режут бумагу»), если он показал бумагу, а его противник – камень («бумага накрывает камень»). Если два игрока показали одинаковые символы, то игра заканчивается вничью.
Алёша и Боря сыграли в эту игру девять раз. Алёша два раза показал камень, три раза – ножницы, четыре раза – бумагу. Боря три раза показал камень, четыре раза – ножницы, два раза – бумагу, но порядок, в котором они показывали эти символы, неизвестен. Также известно, что игра ни разу не закончилась вничью. Определите, какое наибольшее число раз мог выиграть Алёша. А какое наибольшее число раз мог выиграть Боря? Объясните свой ответ.
Три вора – Камнев, Ножницын и Бумагин хотят переправиться через реку. У каждого вора два больших баула. В лодке три места, одно место занимает один человек или один баул. Грести умеет только Камнев. При этом если Камнев останется в лодке или на берегу с баулом Ножницына и Ножницына не будет рядом, то Камнев обчистит баул Ножницына. Аналогично Ножницын обчистит баул Бумагина в его отсутствие, а Бумагин обчистит баул Каменева в его отсутствие. Как им переправиться на другой берег? Опишите алгоритм их действий.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 20, при этом число гирек в наборе должно быть как можно меньше. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться. Объясните, как любую массу от 1 до 20 граммов можно взвесить при помощи предложенного набора.
Вам нужно умножить некоторое большое число X на 27. У вас есть калькулятор, но на калькуляторе сломались все кнопки операций, кроме сложения. Поэтому вы можете только складывать разные числа (например, можно сложить число X и число X, тогда получится 2X, затем можно сложить число 2X и 2X и получится 4X, а можно сложить 2X и X и получится 3X, то есть можно складывать любые ранее полученные числа между собой). Определите, при помощи какого минимального числа сложений можно получить число 27X. Приведите последовательность операций, при помощи которых можно получить число 27X за указанное число сложений.
Каждая задача оценивается в 10 баллов. Итоговый балл выставляется как сумма баллов за 4 задачи с лучшим результатом (то есть для получения максимального балла нужно решить 4 любые задачи). Вы можете отправить на проверку не более 5 решений суммарно по всем задачам 1–5.
В задачах 1–4 оценивается последнее решение, которое было принято на проверку.
Лужайка в парке имеет форму прямоугольника размером a × b метров, разбитого на квадраты со стороной 1 метр. Необходимо поставить внутри лужайки ограждения между некоторыми квадратами так, чтобы образовалась спиральная дорожка, закручивающаяся к центру лужайки. Определите длину такого ограждения.
На рисунке изображена лужайка размером 4 × 6 и ограждение, которое необходимо поставить на ней. Длина ограждения для такой лужайки будет равна 15.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответом на эту задачу является некоторое выражение, которое может содержать целые числа, переменные a и b (записываемые английскими буквами), операции сложения (обозначается «+»), вычитания (обозначается «−»), умножения (обозначается «*»), деления (обозначается «/») и круглые скобки для изменения порядка действий. Запись вида «2a» для обозначения произведения числа 2 и переменной a неверная, нужно писать «2 * a».
Пример правильного (по форме записи) выражения: a + (b − a) * 2.
В библиотеке на полке стоят 8 томов полного собрания сочинений одного писателя. Библиотекарь обозначил их латинскими буквами от A до H в порядке выхода томов.
Получилась следующая последовательность:
Библиотекарь решил переставить эти книги так, чтобы они шли по порядку: A, B, C, D, E, F, G, H. За одно действие библиотекарь может взять несколько подряд идущих книг, достать их с полки и, не меняя порядок следования книг, перевернуть их и поставить на место в обратном порядке. Например, если библиотекарь достанет книги с H по F и перевернёт их, то новый порядок следования книг будет таким: E, D, G, F, B, C, H, A.
Помогите библиотекарю упорядочить этот ряд книг за минимальное число действий. То, что некоторые книги окажутся перевёрнутыми вверх ногами, библиотекарю не важно.
Ответом на эту задачу является последовательность операций. Одна операция записывается в одной строке. Описание каждой операции состоит из двух латинских букв (от A до H), которые являются обозначениями крайних томов в переворачиваемом фрагменте, например, выше был рассмотрен пример для операции «H F».
Чем меньше операций будет в вашем алгоритме, тем больше баллов вы получите, при условии, что в результате применения вашего алгоритма тома будут расставлены по порядку от A до H.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 40. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться.
Например, при помощи трёх гирек массами 1, 1 и 5 граммов можно отмерить любую целочисленную массу от 1 до 7 граммов по следующей схеме (x – взвешиваемая масса):
грамм: x = 1,
грамма: x = 1 + 1,
грамма: x + 1 + 1 = 5,
грамма: x + 1 = 5,
граммов: x = 5, 6 граммов: x = 5 + 1, 7 граммов: x = 5 + 1 + 1.
Ответом на эту задачу являются несколько целых чисел, записанных через пробел, – массы гирек, при помощи которых можно отмерить любую целочисленную массу от 1 до 40. В наборе должно быть не более 8 чисел. Числа в наборе могут повторяться. Чем меньше гирек будет в предложенном наборе, тем больше баллов вы получите, при условии, что, используя гирьки из данного набора, можно отмерить каждую целочисленную массу от 1 до 40.
Вы хотите возвести данное число a в некоторую целочисленную степень n, но ваш калькулятор умеет только перемножать числа. Например, вы можете вычислить a2 = a × a, затем вы можете вычислить a3 = a2 × a или a4 = a2 × a2.
Вы можете по-разному организовать вычисление значения an. Например, вычислить a5 можно за 4 умножения:
a2 = a × a,
a3 = a2 × a,
a4 = a3 × a, 4) a5 = a4 × a.
Но можно вычислить a5 всего лишь за 3 умножения:
1) a2 = a × a,
2) a3 = a2×a,
3) a5 =a3×a2.
Вам необходимо определить, за какое минимальное число умножений можно вычислить следующие степени: 7, 15, 23, 63. Вычисление каждой из этих степеней должно быть независимо от остальных, то есть при вычислении 15-й степени нельзя использовать вычисления, проделанные ранее для вычисления 7-й степени. Вы решаете четыре независимые задачи – за какое минимальное число умножений можно вычислить 7-ю степень, 15-ю степень, 23-ю степень и 63-ю степень.
Ответ на это задание записывается в четырёх строках. Каждая строка должна содержать последовательность вычисления каждой из указанных степеней. Первая строка должна содержать последовательность вычисления 7-й степени, вторая строка – 15-й степени, третья строка – 23-й степени, четвертая строка – 63-й степени.
Каждая строка содержит через пробел несколько целых чисел – значения степеней в том порядке, в котором они вычисляются. Например, для вычисления 5-й степени решение можно записать в виде строки
2 3 5
или
2 4 5, что означает, что последовательно вычисляются степени a2, a3, a5 (одно возможное решение) или a2, a4, a5 (другое возможное решение). Такм образом, каждая строка должна начинаться числом 2, а заканчиваться тем значением степени, которое нужно вычислить (7, 15, 23, 63).
Чем меньше операций умножения вы будете использовать, тем больше баллов вы получите, при условии, что предложенные последовательности вычисления степеней являются корректными.
Решением задач 5–7 является программа, написанная на одном из языков программирования.
Задачи 5–7 необязательно решать для получения полного балла.
Ограничение по времени работы программы в задачах 5–7: 1 секунда.
Решения задач 5–7 оцениваются, только если они выдают правильный ответ на всех примерах входных и выходных данных, приведённых в условии задачи. Проверка решений производится сразу же после отправки, по каждой задаче оценивается решение, набравшее наибольшее число баллов. На странице «Итог» вы можете видеть окончательный балл по всем задачам.
Программа не должна выводить никаких иных сообщений, кроме того, что требуется найти в задаче. Во всех задачах целые числа во входных и выходных данных записываются только цифрами (то есть недопустимо использование записи 1000000.0 или 1e+6 вместо числа 1000000). Каждое число во входных данных записано в отдельной строке.
Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл бизнес по производству спиннеров. Он выяснил, что за спиннер, у которого N лопастей, покупатели готовы платить A + B × N рублей, но при этом покупатель не станет покупать спиннер, если его цена будет выше C рублей. Определите максимальное число лопастей спиннера, который согласится приобрести покупатель.
Программа получает на вход три числа A, B, C (стоимость основания спиннера, стоимость одной лопасти и максимальная стоимость всего спиннера). Все числа – целые положительные, не превосходящие 2×109 , при этом A ≤ C.
Программа должна вывести одно число – максимальное число лопастей спиннера.
|
|
|
10 55 |
|
|
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 100, будет оцениваться в 60 баллов.
Ниже даны примеры ввода и вывода данных к этой задаче на нескольких языках программирования. Выберите один из языков программирования, допишите соответствующую программу и отправьте её на проверку с использованием одного из допустимых компиляторов.
var A, B, C, N: longint; begin readln(A); readln(B); readln(C); ..... N = … writeln(N); end. |
INPUT A
INPUT B
INPUT C …
N = …
print N |
Денис тоже решил заняться производством и продажей спиннеров, но он считает, что у спиннера может быть только три или четыре лопасти. У него есть ровно M лопастей, которые он может прикреплять к основаниям, и неограниченный запас оснований. Он хочет изготовить несколько трёхлопастных и несколько четырёхлопастных спиннеров так, чтобы использовать все M лопастей. Определите, сколько спиннеров каждого вида он должен произвести.
Программа получает на вход одно целое положительное число M, не превосходящее 2×109 , – количество лопастей, которое есть у Дениса.
Программа должна вывести два целых числа – количество спиннеров с 3 лопастями и количество спиннеров с 4 лопастями, которые должен произвести Денис. Если у задачи есть несколько решений, нужно вывести любое из них. Если Денис не может использовать ровно M лопастей для производства спиннеров, программа должна вывести два числа 0.
| Ввод | Вывод | Примечание |
| 10 | 2 1 |
10=3*2+4*1 |
| 1 | 0 0 | Невозможно произвести спиннеры так, чтобы суммарное число лопастей было равно 1.
|
Решение, правильно работающее только для случаев, когда M не превосходит 100, будет оцениваться в 60 баллов.
Саша совсем не любит спиннеры, поэтому он рисует в тетрадке. Он взял тетрадный лист из N × M клеточек и пронумеровал все клетки различными числами. Теперь ему стало интересно, сколько различных прямоугольников он может вырезать из этого листа бумаги по границам клеточек.
Программа получает на вход два числа N и M – размеры исходного листа. Все числа – целые положительные, не превосходящие 75000.
Программа должна вывести одно число – количество прямоугольников, которые можно вырезать из данного листа бумаги (весь лист целиком также считается одним из возможных прямоугольников).

Решение, правильно работающее только для случаев, когда все входные числа не превосходят 10, будет оцениваться в 40 балла.
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 200, будет оцениваться в 70 баллов.
Ограничение по времени работы программы в каждой задаче – 1 секунда.
Решения оцениваются, только если они выдают правильный ответ на всех примерах входных и выходных данных, приведённых в условии задачи.
Программа не должна выводить никаких иных сообщений, кроме того, что требуется найти в задаче. Во всех задачах целые числа во входных и выходных данных записываются только цифрами (то есть недопустимо использование записи 1000000.0 или 1e+6 вместо числа 1000000). Каждое число во входных данных записано в отдельной строке.
Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл бизнес по производству спиннеров. Он выяснил, что за спиннер, у которого N лопастей, покупатели готовы платить A + B × N рублей, но при этом покупатель не станет покупать спиннер, если его цена будет выше C рублей. Определите максимальное число лопастей спиннера, который согласится приобрести покупатель.
Программа получает на вход три числа A, B, C (стоимость основания спиннера, стоимость одной лопасти и максимальная стоимость всего спиннера). Все числа – целые положительные, не превосходящие 2×109 , при этом A ≤ C.
Программа должна вывести одно число – максимальное число лопастей спиннера.
|
|
|
10 55 |
|
|
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 100, будет оцениваться в 60 баллов.
Ниже даны примеры ввода и вывода данных к этой задаче на нескольких языках программирования. Выберите один из языков программирования, допишите соответствующую программу и отправьте её на проверку с использованием одного из допустимых компиляторов.
var A, B, C, N: longint; begin readln(A); readln(B); readln(C); ..... N = … writeln(N); end. |
INPUT A
INPUT B
INPUT C …
N = …
print N |
Денис тоже решил заняться производством и продажей спиннеров, но он считает, что у спиннера может быть только три или четыре лопасти. У него есть ровно M лопастей, которые он может прикреплять к основаниям, и неограниченный запас оснований. Он хочет изготовить несколько трёхлопастных и несколько четырёхлопастных спиннеров так, чтобы использовать все M лопастей. Определите, сколько спиннеров каждого вида он должен произвести.
Программа получает на вход одно целое положительное число M, не превосходящее 2×109 , – количество лопастей, которое есть у Дениса.
Программа должна вывести два целых числа – количество спиннеров с 3 лопастями и количество спиннеров с 4 лопастями, которые должен произвести Денис. Если у задачи есть несколько решений, нужно вывести любое из них. Если Денис не может использовать ровно M лопастей для производства спиннеров, программа должна вывести два числа 0.
| Ввод | Вывод | Примечание |
| 10 | 2 1 |
10=3*2+4*1 |
| 1 | 0 0 | Невозможно произвести спиннеры так, чтобы суммарное число лопастей было равно 1.
|
Решение, правильно работающее только для случаев, когда M не превосходит 100, будет оцениваться в 60 баллов.
Саша совсем не любит спиннеры, поэтому он рисует в тетрадке. Он взял тетрадный лист из N × M клеточек и пронумеровал все клетки различными числами. Теперь ему стало интересно, сколько различных прямоугольников он может вырезать из этого листа бумаги по границам клеточек.
Программа получает на вход два числа N и M – размеры исходного листа. Все числа – целые положительные, не превосходящие 75000.
Программа должна вывести одно число – количество прямоугольников, которые можно вырезать из данного листа бумаги (весь лист целиком также считается одним из возможных прямоугольников).

Решение, правильно работающее только для случаев, когда все входные числа не превосходят 10, будет оцениваться в 40 баллов.
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 200, будет оцениваться в 70 баллов.
В доме девять этажей, но лифт сломался, и теперь в нём работают только две кнопки. Нажатие на первую кнопку приводит к тому, что лифт поднимается на пять этажей вверх, а при нажатии на вторую кнопку лифт спускается на три этажа вниз. Подниматься выше девятого этажа или спускаться ниже первого этажа нельзя, ходить по лестнице тоже нельзя. Как подняться с первого этажа на девятый?
Нужно подняться на 8 этажей, если выполнили x операций «подняться на 5», и y операций «спуститься на 3», то 5x-3y=8. Решение можно найти подбором, , например, такое: y = 4, x = 4. Можно также заметить, что выполнение операции «подняться на 5» и операции «спуститься на 3» приводит к подъему на 2 этажа, поэтому эти операции нужно выполнить по 4 раза.
Для полного решения необходимо ещё привести пример последовательности операций. Пример.
| Операция | Этаж |
|
| 1 |
| Подняться на 5 | 6 |
| Спуститься на 3 | 3 |
| Подняться на 5 | 8 |
| Спуститься на 3 | 5 |
| Спуститься на 3 | 2 |
| Подняться на 5 | 7 |
| Спуститься на 3 | 4 |
| Подняться на 5 | 9 |
Правильно приведенная последовательность действий – 5 баллов.
Последовательность действий, в которой общее число операций «Подняться на 5» и «Спуститься на 3» найдено верно, но в результате неправильного порядка происходит однократный выход выше 9 этажа или ниже 1 этажа – 3 балла.
Последовательность действий, в которой общее число операций «Подняться на 5» и «Спуститься на 3» найдено верно, но число выходов выше 9 этажа или ниже 1 этажа больше одного – 2 балла.
Правильно указано число операций «Подняться на 5» и «Спуститься на 3» – 2 балла.
В игре «Камень, ножницы, бумага» двое игроков одновременно показывают при помощи руки один из трёх условных символов – «камень», «ножницы» или «бумага». Игрок выигрывает, если он показал камень, а его противник – ножницы («камень тупит ножницы»), если он показал ножницы, а его противник – бумагу («ножницы режут бумагу»), если он показал бумагу, а его противник – камень («бумага накрывает камень»). Если два игрока показали одинаковые символы, то игра заканчивается вничью.
Алёша и Боря сыграли в эту игру девять раз. Алёша два раза показал камень, три раза – ножницы, четыре раза – бумагу. Боря три раза показал камень, четыре раза – ножницы, два раза – бумагу, но порядок, в котором они показывали эти символы, неизвестен. Определите, какое наибольшее число раз мог выиграть Алёша. А какое наибольшее число раз мог выиграть Боря? Объясните свой ответ.
Составим таблицу, сколько раз каждый из мальчиков показывал каждый символ:
|
| Алёша | Боря |
| Камень | 2 | 3 |
| Ножницы | 3 | 4 |
| Бумага | 4 | 2 |
Боря мог выиграть все 9 раз, если 3 раза Боря показал камень, Алёша – ножницы, 4 раза Боря показал ножницы, Алёша – бумагу, 2 раза Боря показал бумагу, Алёша – камень.
Посчитаем, сколько раз Алёша мог выиграть у Бори. Такое могло произойти в следующих случаях:
Алёша показывает камень, Боря – ножницы. Это могло произойти не более 2 раз.
Алёша показывает ножницы, Боря – бумагу. Это могло произойти не более 2 раз.
Алёша показывает бумагу, Боря – камень. Это могло произойти не более 7 раз.
Таким образом, Алёша мог выиграть не более 7 раз. Необходимо также привести пример, когда Алёша выиграл у Бори 7 раз.
Алёша показывает камень, Боря показывает ножницы – 2 раза.
Алёша показывает ножницы, Боря показывает бумагу – 2 раза.
Алёша показывает бумагу, Боря показывает камень – 3 раза.
Алёша показывает бумагу, Боря показывает ножницы – 1 раз.
Алёша показывает ножницы, Боря показывает ножницы – 1 раз.
Алёша выигрывает в случаях 1-3, то есть 7 раз.
Оценка складывается из двух оценок – ответ на вопрос о том, сколько раз мог выиграть Алёша (максимум 3 балла) и сколько раз мог выиграть Боря (максимум 2 балла).
Правильно указано, что Алёша мог выиграть 7 раз, показано, что Алёша не мог выиграть более 7 раз, приведён пример, когда Алёша выигрывает 7 раз – 3 балла.
Отсутствует объяснение, почему Алёша не может выиграть более 7 раз, или отсутствует пример, когда Алёша выигрывает 7 раз – 2 балла.
Дан только ответ, что Алёша может выиграть не более 7 раз – 1 балл.
Правильно указано, что Боря может выиграть 9 раз, приведён пример – 2 балла.
Только ответ, что Боря может выиграть 9 раз без примера – 1 балл.
Три вора – Камнев, Ножницын и Бумагин хотят переправиться через реку. У каждого вора два больших баула. В лодке три места, одно место занимает один человек или один баул. Грести умеет только Камнев. При этом если Камнев останется в лодке или на берегу с баулом Ножницына и Ножницына не будет рядом, то Камнев обчистит баул Ножницына. Аналогично Ножницын обчистит баул Бумагина в его отсутствие, а Бумагин обчистит баул Каменева в его отсутствие. Как им переправиться на другой берег? Опишите алгоритм их действий.
Возможный алгоритм действий.
Камнев перевозит два своих баула и возвращается назад.
Камнев перевозит Ножницына с баулом Ножницына, возвращается с Ножницыном.
Камнев перевозит Ножницына с баулом Ножницына, возвращается один назад.
Камнев перевозит Бумагина с баулом Бумагина, оставляет их на другом берегу, возвращается назад с двумя своими баулами.
Камнев перевозит баул Бумагина и возвращается назад.
Камнев перевозит два своих баула.
Приведён верный алгоритм – 5 баллов.
Алгоритм с одной ошибкой (например, однажды возникает ситуация, когда один вор может обчистить баул другого вора, или один баул остаётся неперевезённым) – 2 балла.
Алгоритм с двумя ошибками – 1 балл.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 10, при этом число гирек в наборе должно быть как можно меньше. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться. Объясните, как любую массу от 1 до 10 граммов можно взвесить при помощи предложенного набора.
В оптимальном наборе гирек для уравновешивания любых масс необходимо использовать гирьки, массы которых являются степенями тройки: 1, 3, 9, 27 и т. д. Это связано с тем, что любое число можно представить в уравновешенной троичной системе счисления, при этом цифра 1 будет соответствовать тому, что гирька данной массы кладётся на одну чашку весов, цифра −1 будет соответствовать гирьке на другой чашке весов, а 0 означает, что данная гирька не используется.
Приведем пример уравновешивания всех масс от 1 до 10 при помощи гирек массами 1, 3, 9.
= 1.
= 3 − 1,
= 3,
= 3 + 1,
= 9 − 3 − 1,6 = 9 − 3,
= 9 − 3 + 1,
= 9 − 1,
= 9,
= 9 + 1.
От учащегося требуется привести пример конструкции из трёх гирек (их массы могут отличаться от примера 1, 3, 9) и показать, что любую массу можно уравновесить при помощи данного набора гирек.
Приведён пример набора из трёх гирек, объяснено, как уравновесить каждую массу от 1 до 10 при помощи данного набора гирек – 5 баллов.
Только приведён пример правильного набора, без обоснования – 3 балла.
Приведён пример набора из трёх гирек, при этом одна какая-то масса от 1 до 10 не может быть уравновешена при помощи этого набора – 1 балл.
Приведён пример набора из четырёх гирек (например, 1, 2, 4, 8), показано, как уравновесить каждую массу от 1 до 10 при помощи данного набора – 3 балла.
Только приведён пример набора из четырёх гирек, удовлетворяющий условию задачи, без обоснования, почему каждую массу от 1 до 10 можно уравновесить при помощи гирек из данного набора – 1 балл.
Вам нужно умножить некоторое большое число X на 15. У вас есть калькулятор, но на калькуляторе сломались все кнопки операций, кроме сложения. Поэтому вы можете только складывать разные числа (например, можно сложить число X и число X, тогда получится 2X, затем можно сложить число 2X и 2X и получится 4X, а можно сложить 2X и X и получится 3X, то есть можно складывать любые ранее полученные числа между собой). Определите, при помощи какого минимального числа сложений можно получить число 15X. Приведите последовательность операций, при помощи которых можно получить число 15X за указанное число сложений.
Задачу можно решить за пять операций. Например:
2X = X + X.
3X = 2X + X.
6X = 3X + 3X.
12X = 6X + 6X.
15X = 12X + 3X.
Верный алгоритм с использованием 5 операций – 5 баллов.
Верный алгоритм с использованием 6 операций – 3 балла.
Верный алгоритм с использованием 7 операций – 1 балл.
Неверный алгоритм или число операций больше 7 – 0 баллов.
В доме девять этажей, но лифт сломался, и теперь в нём работают только две кнопки. Нажатие на первую кнопку приводит к тому, что лифт поднимается на пять этажей вверх, а при нажатии на вторую кнопку лифт спускается на три этажа вниз. Подниматься выше девятого этажа или спускаться ниже первого этажа нельзя, ходить по лестнице тоже нельзя. Как подняться с первого этажа на девятый?
Нужно подняться на 8 этажей, если выполнили x операций «подняться на 5», и y операций «спуститься на 3», то 5x-3y=8. Решение можно найти подбором, , например, такое: y = 4, x = 4. Можно также заметить, что выполнение операции «подняться на 5» и операции «спуститься на 3» приводит к подъему на 2 этажа, поэтому эти операции нужно выполнить по 4 раза.
Для полного решения необходимо ещё привести пример последовательности операций. Пример.
| Операция | Этаж |
|
| 1 |
| Подняться на 5 | 6 |
| Спуститься на 3 | 3 |
| Подняться на 5 | 8 |
| Спуститься на 3 | 5 |
| Спуститься на 3 | 2 |
| Подняться на 5 | 7 |
| Спуститься на 3 | 4 |
| Подняться на 5 | 9 |
Правильно приведенная последовательность действий – 5 баллов.
Последовательность действий, в которой общее число операций «Подняться на 5» и «Спуститься на 3» найдено верно, но в результате неправильного порядка происходит однократный выход выше 9 этажа или ниже 1 этажа – 3 балла.
Последовательность действий, в которой общее число операций «Подняться на 5» и «Спуститься на 3» найдено верно, но число выходов выше 9 этажа или ниже 1 этажа больше одного – 2 балла.
Правильно указано число операций «Подняться на 5» и «Спуститься на 3» – 2 балла.
В игре «Камень, ножницы, бумага» двое игроков одновременно показывают при помощи руки один из трёх условных символов – «камень», «ножницы» или «бумага». Игрок выигрывает, если он показал камень, а его противник – ножницы («камень тупит ножницы»), если он показал ножницы, а его противник – бумагу («ножницы режут бумагу»), если он показал бумагу, а его противник – камень («бумага накрывает камень»). Если два игрока показали одинаковые символы, то игра заканчивается вничью.
Алёша и Боря сыграли в эту игру девять раз. Алёша два раза показал камень, три раза – ножницы, четыре раза – бумагу. Боря три раза показал камень, четыре раза – ножницы, два раза – бумагу, но порядок, в котором они показывали эти символы, неизвестен. Также известно, что игра ни разу не закончилась вничью. Определите, какое наибольшее число раз мог выиграть Алёша. А какое наибольшее число раз мог выиграть Боря? Объясните свой ответ.
Составим таблицу, сколько раз каждый из мальчиков показывал каждый символ:
|
| Алёша | Боря |
| Камень | 2 | 3 |
| Ножницы | 3 | 4 |
| Бумага | 4 | 2 |
Боря мог выиграть все 9 раз, если 3 раза Боря показал камень, Алёша – ножницы, 4 раза Боря показал ножницы, Алёша – бумагу, 2 раза Боря показал бумагу, Алёша – камень.
Посчитаем, сколько раз Алёша мог выиграть у Бори. Такое могло произойти в следующих случаях:
Алёша показывает камень, Боря – ножницы. Это могло произойти не более 2 раз.
Алёша показывает ножницы, Боря – бумагу. Это могло произойти не более 2 раз.
Алёша показывает бумагу, Боря – камень. Это могло произойти не более 7 раз.
Таким образом, Алёша мог выиграть не более 7 раз, но этот вариант недостижим, так как в этом случае в 7 партиях выигрывает Алёша:
Алёша показывает камень, Боря показывает ножницы – 2 раза.
Алёша показывает ножницы, Боря показывает бумагу – 2 раза.
Алёша показывает бумагу, Боря показывает камень – 3 раза.
Оставшиеся две партии должны быть такими:
Алёша показывает бумагу, Боря показывает ножницы – 1 раз.
Алёша показывает ножницы, Боря показывает ножницы – 1 раз.
В этом случае один раз игра заканчивается вничью, что недопустимо по условию задачи, то есть Алёша не мог выиграть 7 партий.
Приведём пример, когда Алёша выиграл 6 партий.
Алёша показывает камень, Боря показывает ножницы – 2 раза.
Алёша показывает ножницы, Боря показывает бумагу – 2 раза.
Алёша показывает бумагу, Боря показывает камень – 2 раза.
Алёша показывает ножницы, Боря показывает камень – 1 раз.
Алёша показывает бумагу, Боря показывает ножницы – 2 раза.
Алёша выигрывает в случаях 1-3, то есть 6 раз.
Оценка складывается из двух оценок – ответ на вопрос о том, сколько раз мог выиграть Алёша (максимум 3 балла) и сколько раз мог выиграть Боря (максимум 2 балла).
Правильно указано, что Алёша мог выиграть 6 раз, показано, что Алёша не мог выиграть более 6 раз, приведён пример, когда Алёша выигрывает 6 раз – 3 балла.
Отсутствует объяснение, почему Алёша не может выиграть более 6 раз, или отсутствует пример, когда Алёша выигрывает 6 раз – 2 балла.
Дан только ответ, что Алёша может выиграть не более 6 раз – 1 балл.
Указано, что Алёша может выиграть 7 раз, приведён пример для 7 выигрышей Алёши, при этом одна партия заканчивается вничью (как в задании для 5 класса) – 1 балл.
Правильно указано, что Боря может выиграть 9 раз, приведён пример – 2 балла.
Только ответ, что Боря может выиграть 9 раз без примера – 1 балл.
Три вора – Камнев, Ножницын и Бумагин хотят переправиться через реку. У каждого вора два больших баула. В лодке три места, одно место занимает один человек или один баул. Грести умеет только Камнев. При этом если Камнев останется в лодке или на берегу с баулом Ножницына и Ножницына не будет рядом, то Камнев обчистит баул Ножницына. Аналогично Ножницын обчистит баул Бумагина в его отсутствие, а Бумагин обчистит баул Каменева в его отсутствие. Как им переправиться на другой берег? Опишите алгоритм их действий.
Возможный алгоритм действий.
Камнев перевозит два своих баула и возвращается назад.
Камнев перевозит Ножницына с баулом Ножницына, возвращается с Ножницыном.
Камнев перевозит Ножницына с баулом Ножницына, возвращается один назад.
Камнев перевозит Бумагина с баулом Бумагина, оставляет их на другом берегу, возвращается назад с двумя своими баулами.
Камнев перевозит баул Бумагина и возвращается назад.
Камнев перевозит два своих баула.
Приведён верный алгоритм – 5 баллов.
Алгоритм с одной ошибкой (например, однажды возникает ситуация, когда один вор может обчистить баул другого вора, или один баул остаётся неперевезённым) – 2 балла.
Алгоритм с двумя ошибками – 1 балл.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 20, при этом число гирек в наборе должно быть как можно меньше. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться. Объясните, как любую массу от 1 до 20 граммов можно взвесить при помощи предложенного набора.
В оптимальном наборе гирек для уравновешивания любых масс необходимо использовать гирьки, массы которых являются степенями тройки: 1, 3, 9, 27 и т. д. Это связано с тем, что любое число можно представить в уравновешенной троичной системе счисления, при этом цифра 1 будет соответствовать тому, что гирька данной массы кладётся на одну чашку весов, цифра −1 будет соответствовать гирьке на другой чашке весов, а 0 означает, что данная гирька не используется.
Приведём пример уравновешивания всех масс от 1 до 20 при помощи гирек массами 1, 3, 9, 27.
= 1.
= 3 − 1,
= 3,
= 3 + 1,
= 9 − 3 − 1,
= 9 − 3,
= 9 − 3 + 1,
= 9 − 1,
= 9,
= 9 + 1,
= 9 + 3 − 1,
= 9 + 3,
= 9 + 3 + 1,
= 27 − 9 − 3 − 1,
= 27 − 9 − 3,
= 27 − 9 − 3 + 1,
= 27 − 9 − 1,
= 27 − 9,19 = 27 − 9 + 1,
20 = 27 − 9 + 3 − 1.
От учащегося требуется привести пример конструкции из четырёх гирек (их массы могут отличаться от примера 1, 3, 9, 27) и показать, что любую массу можно уравновесить при помощи данного набора гирек.
Приведён пример набора из четырёх гирек, объяснено, как уравновесить каждую массу от 1 до 20 при помощи данного набора гирек – 5 баллов.
Только приведён пример правильного набора, без обоснования – 3 балла.
Приведён пример набора из четырёх гирек, при этом одна какая-то масса от 1 до 20 не может быть уравновешена при помощи этого набора – 1 балл.
Приведён пример набора из пяти гирек (например, 1, 2, 4, 8, 16), показано, как уравновесить каждую массу от 1 до 20 при помощи данного набора – 3 балла.
Только приведён пример набора из пяти гирек, удовлетворяющий условию задачи, без обоснования, почему каждую массу от 1 до 20 можно уравновесить при помощи гирек из данного набора – 1 балл.
Вам нужно умножить некоторое большое число X на 27. У вас есть калькулятор, но на калькуляторе сломались все кнопки операций, кроме сложения. Поэтому вы можете только складывать разные числа (например, можно сложить число X и число X, тогда получится 2X, затем можно сложить число 2X и 2X и получится 4X, а можно сложить 2X и X и получится 3X, то есть можно складывать любые ранее полученные числа между собой). Определите, при помощи какого минимального числа сложений можно получить число 27X. Приведите последовательность операций, при помощи которых можно получить число 27X за указанное число сложений.
Задачу можно решить за шесть операций. Например:
2X = X + X.
3X = 2X + X.
6X = 3X + 3X.
9X = 6X + 3X.
18X = 9X + 9X.
27X = 18X + 9X.
Верный алгоритм с использованием 6 операций – 5 баллов.
Верный алгоритм с использованием 7 операций – 3 балла.
Верный алгоритм с использованием 8 операций – 1 балл.
Неверный алгоритм или число операций больше 8 – 0 баллов.
Лужайка в парке имеет форму прямоугольника размером a × b метров, разбитого на квадраты со стороной 1 метр. Необходимо поставить внутри лужайки ограждения между некоторыми квадратами так, чтобы образовалась спиральная дорожка, закручивающаяся к центру лужайки. Определите длину такого ограждения.
На рисунке изображена лужайка размером 4 × 6 и ограждение, которое необходимо поставить на ней. Длина ограждения для такой лужайки будет равна 15.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответом на эту задачу является некоторое выражение, которое может содержать целые числа, переменные a и b (записываемые английскими буквами), операции сложения (обозначается «+»), вычитания (обозначается «−»), умножения (обозначается «*»), деления (обозначается «/») и круглые скобки для изменения порядка действий. Запись вида «2a» для обозначения произведения числа 2 и переменной a неверная, нужно писать «2 * a». Пример правильного (по форме записи) выражения: a + (b − a) * 2.
Посчитаем общее число горизонтальных и вертикальных отрезков длины 1 между клетками на рисунке лужайки. Их число равно a × (b − 1) + b × (a − 1).
После того, как будет поставлено ограждение, отрезков, в которых не будет поставлено ограждение, останется a × b − 1, так как получится цепочка из a × b клеток, между двумя соседними клетками в цепочке ограждение отсутствует.
Таким образом, ответом является выражение a * (b − 1) + b * (a − 1) − (a * b − 1). Это выражение можно упростить до вида (a − 1) * (b − 1), которое можно просто получить подбором, рассматривая примеры для разных значений a и b.
В библиотеке на полке стоят 8 томов полного собрания сочинений одного писателя. Библиотекарь обозначил их латинскими буквами от A до H в порядке выхода томов.
Получилась следующая последовательность:
Библиотекарь решил переставить эти книги так, чтобы они шли по порядку: A, B, C, D, E, F, G, H. За одно действие библиотекарь может взять несколько подряд идущих книг, достать их с полки и, не меняя порядок следования книг, перевернуть их и поставить на место в обратном порядке. Например, если библиотекарь достанет книги с H по F и перевернёт их, то новый порядок следования книг будет таким: E, D, G, F, B, C, H, A.
Помогите библиотекарю упорядочить этот ряд книг за минимальное число действий. То, что некоторые книги окажутся перевёрнутыми вверх ногами, библиотекарю не важно.
Ответом на эту задачу является последовательность операций. Одна операция записывается в одной строке. Описание каждой операции состоит из двух латинских букв
(от A до H), которые являются обозначениями крайних томов в переворачиваемом фрагменте, например, выше был рассмотрен пример для операции «H F».
Чем меньше операций будет в вашем алгоритме, тем больше баллов вы получите, при условии, что в результате применения вашего алгоритма тома будут расставлены по порядку от A до H.
Наилучшее решение этой задачи содержит четыре операции:
G B
B C
H A
E A
Есть и другие варианты решения, использующие четыре операции.
Есть чашечные весы без делений. Для взвешивания груза также можно использовать гирьки, массы которых – целое число граммов. Вам необходимо предложить набор гирек, при помощи которого можно отмерить на весах любую массу, равную целому числу граммов от 1 до 40. Гирьки можно класть на каждую чашку весов, чашки весов должны находиться в равновесии, при этом на одной из чашек весов должен находиться взвешиваемый груз. Массы гирек в наборе могут повторяться.
Например, при помощи трёх гирек массами 1, 1 и 5 граммов можно отмерить любую целочисленную массу от 1 до 7 граммов по следующей схеме (x – взвешиваемая масса):
грамм: x = 1,
грамма: x = 1 + 1,
грамма: x + 1 + 1 = 5,
грамма: x + 1 = 5,
граммов: x = 5, 6 граммов: x = 5 + 1, 7 граммов: x = 5 + 1 + 1.
Ответом на эту задачу являются несколько целых чисел, записанных через пробел, – массы гирек, при помощи которых можно отмерить любую целочисленную массу от 1 до 40. В наборе должно быть не более 8 чисел. Числа в наборе могут повторяться. Чем меньше гирек будет в предложенном наборе, тем больше баллов вы получите, при условии, что, используя гирьки из данного набора, можно отмерить каждую целочисленную массу от 1 до 40.
Возникает желание использовать в ответе степени двойки: 1, 2, 4, 8, 16, 32. Но такое решение не является оптимальным, поскольку не использует возможность класть гирьки на обе чашки весов. Если гирьки можно класть на обе чащи весов, то каждая из гирек может учитываться с коэффициентом −1 или +1, в зависимости от того, лежит ли она на одной чашке со взвешиваемой массой или на противоположной, а также с коэффициентом 0, если гирька не участвует во взвешивании. Поэтому вместо степеней двойки можно использовать степени тройки: 1, 3, 9, 27. Возможность представления всех масс от 1 до 40 следует из того, что все целые числа можно представить в симметричной троичной системе счисления, то есть в виде сумм степеней тройки, умноженных на коэффициенты 0, 1 и −1, а также из того факта, что 40 = 1 + 3 + 9 + 27.
Ответ: 1 3 9 27.
Вы хотите возвести данное число a в некоторую целочисленную степень n, но ваш калькулятор умеет только перемножать числа. Например, вы можете вычислить a2 = a × a, затем вы можете вычислить a3 = a2 × a или a4 = a2 × a2.
Вы можете по-разному организовать вычисление значения an. Например, вычислить a5 можно за 4 умножения:
a2 = a × a,
a3 = a2 × a,
a4 = a3 × a, 4) a5 = a4 × a.
Но можно вычислить a5 всего лишь за 3 умножения:
1) a2 = a × a, 2) a3 = a2×a,
3) a5 = a3×a2.
Вам необходимо определить, за какое минимальное число умножений можно вычислить следующие степени: 7, 15, 23, 63. Вычисление каждой из этих степеней должно быть независимо от остальных, то есть при вычислении 15-й степени нельзя использовать вычисления, проделанные ранее для вычисления 7-й степени. Вы решаете четыре независимые задачи – за какое минимальное число умножений можно вычислить 7-ю степень, 15-ю степень, 23-ю степень и 63-ю степень.
Ответ на это задание записывается в четырёх строках. Каждая строка должна содержать последовательность вычисления каждой из указанных степеней. Первая строка должна содержать последовательность вычисления 7-й степени, вторая строка – 15-й степени, третья строка – 23-й степени, четвертая строка – 63-й степени.
Каждая строка содержит через пробел несколько целых чисел – значения степеней в том порядке, в котором они вычисляются. Например, для вычисления 5-й степени решение можно записать в виде строки
2 3 5 или
2 4 5, что означает, что последовательно вычисляются степени a2, a3, a5 (одно возможное решение) или a2, a4, a5 (другое возможное решение). Таким образом, каждая строка должна начинаться числом 2, а заканчиваться тем значением степени, которое нужно вычислить (7, 15, 23, 63).
Чем меньше операций умножения вы будете использовать, тем больше баллов вы получите, при условии, что предложенные последовательности вычисления степеней являются корректными.
В этой задаче также возникает желание использовать двоичную систему счисления, как и в алгоритме быстрого возведения в степень. Например, чтобы вычислить a7 степень, необходимо вычислить a2 и a4, а затем перемножить a, a2, a4. Всего понадобится 4 умножения. Для вычисления a15, a23, a63 через двоичную систему счисления понадобится 6, 7 и 10 умножений соответственно.
Но есть способ вычислить a15, a23, a63 используя меньшее число умножений — 5, 6 и 8. Пример наилучшего решения.
2 3 5 7
2 3 6 12 15
2 3 5 10 20 23
2 3 6 12 15 30 60 63
| Номер теста | Ввод | Вывод | Баллы |
| 1 | 20 10 55 | 3 | 5 |
| 2 | 30 20 65 | 1 | 5 |
| 3 | 905 101 3100 | 21 | 20 |
| 4 | 1500011 20122 200010001 | 9865 | 20 |
| 5 | 1234567 1234 123456 | -1 | 10 |
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 100, будет оцениваться в 60 баллов.
По условию задачи A + B × N ≤ C, откуда N ≤ (C – A) / B. Программа должна вывести целочисленное частное от деления (C – A) / B, то есть округлить результат вниз до целого числа. Для этого в языке Pascal используется операция div
Пример полного решения на Питоне.
a = int(input())
b = int(input())
c = int(input())
n = (c - a) // b print(n)
60 баллов набирали решения, в которых значение N увеличивалось в цикле на 1, пока выполнялось условие A + B × N ≤ C. Пример решения на 60 баллов.
a = int(input())
b = int(input())
c = int(input())
n = 0
while a + b * n
n = n + 1
print(n - 1)
Программа получает на вход одно целое положительное число M, не превосходящее 2×109 , – количество лопастей, которое есть у Дениса.
Программа должна вывести два целых числа – количество спиннеров с 3 лопастями и количество спиннеров с 4 лопастями, которые должен произвести Денис. Если у задачи есть несколько решений, нужно вывести любое из них. Если Денис не может использовать ровно M лопастей для производства спиннеров, программа должна вывести два числа 0.
| Номер теста | Ввод | Вывод | Баллы |
| 1 | 10 | 2 1 | 5 |
| 2 | 2 | 0 0 | 5 |
| 3 | 98 | 30 2 | 20 |
| 4 | 123456789 | 41152263 0 | 30 |
Решение, правильно работающее только для случаев, когда M не превосходит 100, будет оцениваться в 60 баллов.
Задача имеет решения для любого M, кроме 1, 2, 5. Заметим, что если число M делится на 3, то можно изготовить только трёхлопастные спинеры, их количество будет равно M / 3. Если M даёт остаток 1 при делении на 3, то необходимо изготовить как минимум один четырёхлопастный спиннер. Если M даёт остаток 2 при делении на 3, то понадобится минимум 2 трёхлопастных спиннера. Таким образом, можно считать, что число четырёхлопастных спиннеров равно остатку от деления M на 3, запишем это количество в переменную n4. Для нахождения остатка от деления в языке Pascal используется операция mod, в языках C, C++ и Python операция «%». Оставшиеся лопасти будем использовать для производства трёхлопастных спиннеров, их количество будет равно (M – 4 n4) / 3. Если при этом число трёхлопастных спиннеров получилось отрицательным, то задача решения не имеет.
Пример решения на языке Python.
m = int(input())
n4 = m % 3
n3 = (m - 4 * n4) // 3
if n3 = 0:
print(n3)
print(n4)
else:
print(0)
print(0)
Программа получает на вход два числа N и M – размеры исходного листа. Все числа – целые положительные, не превосходящие 75000.
Программа должна вывести одно число – количество прямоугольников, которые можно вырезать из данного листа бумаги (весь лист целиком также считается одним из возможных прямоугольников).
| Номер теста | Ввод | Вывод | Баллы |
| 1 | 2 2 | 9 | 5 |
| 2 | 3 1 | 6 | 5 |
| 3 | 99 9 | 222750 | 30
|
| 4 | 250 50 | 40003125 | 20 |
| 5 | 75000 8000 | 90012450150000000 | 20 |
Если программа работает более 1 с, то результат на засчитывают.
Система оценивания
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 10, будет оцениваться в 40 баллов.
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 200, будет оцениваться в 70 баллов.
Пронумеруем столбцы листа числами от 1 до N, строки листа числами от 1 до M. Пусть клетка, находящаяся в одном углу прямоугольника имеет координаты x1, y1, а противоположная клетка — координаты x2, y2. Тогда выполнены неравенства 1 ≤ x1 ≤ x2 ≤ N, 1 ≤ y1 ≤ y2 ≤ M. Задача сводится к подсчёту количества четвёрок чисел x1, y1, x2, y2, удовлетворяющих этим неравенствам.
Если это делать при помощи четырёх циклов, то получится решение сложности O(N2M2), которое набирает 40 баллов.
Пример такого решения на Питоне.
n = int(input())
m = int(input())
ans = 0
for x1 in range(n):
for x2 in range(x1, n):
for y1 in range(m):
for y2 in range(y1, m):
ans += 1
print(ans)
Для получения больших баллов необходимо оптимизировать это решение.
Например, можно заметить, что задачу можно решать независимо по каждой из двух осей координат, то есть нужно подсчитать количество подходящих пар x1, x2 и количество подходящих пар y1, y2 и перемножить два найденных числа. Такое решение будет иметь сложность O(N2 + M2) и набирает 70 баллов.
Пример такого решения:
n = int(input())
m = int(input())
ans_x = 0
ans_y = 0
for x1 in range(n):
for x2 in range(x1, n):
ans_x += 1
for y1 in range(m):
for y2 in range(y1, m):
ans_y += 1
print(ans_x * ans_y)
Страница 27 из 28
© 2018, Плотникова Екатерина Викторовна 1067 3