Ответ
Задание 1. Мастер‑класс
Антон Алексеевич, преподаватель математики в старшей школе, решил продемонстрировать практическое применение математических расчётов и провести мастер‑класс по очистке квадратной маркерной доски длины n квадратной губкой длины a.
Антон Алексеевич использует свой фирменный метод, затирая каждый сантиметр доски без лишних движений. Он начинает с верхнего левого угла доски, двигаясь слева направо, затем вниз, влево, вверх, повторяя этот процесс, пока вся доска не будет очищена, но не проходя губкой по тем местам, которые уже очищены (см. рисунок ниже). Губка не вращается во время стирания с доски. Гарантируется, что длина стороны губки делит длину стороны доски без остатка.
Определите длину ломаной линии, которую описывает верхний левый угол квадратной губки при затирании квадратной доски.
Формат входных данных
Первая строка содержит целое число n (1≤n≤109) длину стороны доски.
Вторая строка содержит целое число a (1≤a≤109, a≤n) длину стороны губки. nn делится на a без остатка.
Формат выходных данных
В единственной строке выведите число длину ломаной, которую пройдёт левый верхний угол губки.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32‑битной целочисленной переменной, поэтому необходимо использовать 64‑битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие при n, a≤103, будут оцениваться в 40 баллов.
Замечание
Проиллюстрируем пример к условию. Жёлтым на схеме обозначена губка, голубым очищенная область, красным маршрут левого верхнего угла губки.
Ввод
6
2
Вывод
16
Ответ:
Язык Python 3
a = int(input())
b = int(input())
d = int(b)
if b > 1:
4пробелаb = b**2
4пробелас = (a**2 // b) – 1
4пробелас = c * d
else:
4пробелаb = b**2
4пробелас = (a**2 // b) – 1
print(c)
Задание 2. Наши слоны
На столе лежит шахматная доска, в которой n строк и m столбцов. Слон может ходить по диагонали на любое количество клеток. Пустая клетка находится «под боем», если какой‑либо из слонов на доске может одним ходом перейти на эту клетку. На доске в четырёх углах стоят четыре слона. Сколько клеток находится «под боем»?
Формат входных данных
В первой строке содержится количество строк шахматной доски nn, во второй столбцов mm (2≤n, m≤108).
Формат выходных данных
В единственной строке выведите целое число количество клеток, находящихся «под боем».
Система оценки
Решения, правильно работающие при nn, m≤500, будут оцениваться в 52 балла.
Замечание
Ввод
2
4
2
2
4
7
Вывод
4
0
10
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <random>
using namespace std;
int main() {
int n, m; cin >> n >> m;
if (n > m) swap(n, m);
if (n == m) cout << 2 * n — n % 2 — — 4; else {
int ans = 4 * (n — 1);
if (n % 2) ans -= 2;
if (m % 2 && 2 * n — 1 >= m) ans -= 2;
cout << ans;
}
Задание 3. Пирамидки
Ваня хочет построить из кубиков n пирамидок. Он собирает пирамидки следующим образом:
1. Изначально в каждой пирамидке имеется по a1 кубиков в первом ряду.
2. В каждой второй пирамидке, т.е. номер которой делится на 2, к ним добавляется по a2 кубиков во второй ряд.
3. В каждой четвёртой пирамидке, т.е. номер которой делится на 4, добавляется по a3 кубиков в третий ряд.
4. В каждой восьмой пирамидке, т.е. номер которой делится на 8, добавляется по a4 кубиков в четвёртый ряд.
И так далее.
Выразим условие более формально: в каждой пирамидке, номер которой делится на (i−1)-ую степень числа 2, к исходному числу кубиков a1 добавляется по ai кубиков в i ряд. Помогите Ване определить количество кубиков, которое ему нужно для построения всех пирамидок.
Формат входных данных
Первая строка входных данных содержит число nn (1≤n≤109) количество пирамидок, которые хочет построить Ваня.
Вторая строка входных данных содержит число kk (1≤k≤30) количество рядов, для которых известно, сколько в них будет кубиков. Гарантируется, что в каждой пирамидке не более чем k рядов.
Каждая из следующих k строк содержит aiai (1≤ai≤109) количество кубиков в i-м ряде пирамидки. Количество кубиков, требующихся для каждого следующего слоя, не убывает.
Формат выходных данных
В единственной строке выведите число количество кубиков, которые нужны Ване для постройки всех пирамидок.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32‑битной целочисленной переменной, поэтому необходимо использовать 64‑битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие при n≤15, ai≤100, будут оцениваться в 20 баллов.
Решения, правильно работающие при n≤105, будут оцениваться в 50 баллов.
Замечание
Рассмотрим первый пример. Пирамидки с нечётными номерами 1, 3, 5 имеют по одному ряду и состоят из 1 кубика. Пирамидки с номерами 2, 6 имеют по два ряда и состоят из 1+3 кубиков. Пирамидка с номером 4 имеет 3 ряда и состоит из 1+3+8 кубиков. В сумме Ване потребуется 1+(1+3)+1+(1+3+8)+1+(1+3) = 23 кубика. Пирамидки изображены на рисунке.
Ввод
6
3
1
3
8
Вывод
23
63
Задание 4. Тайна магического домино
В далёком королевстве, где магия и реальность переплетаются, существует легенда о бесконечной цепи магических костяшек домино. Эти костяшки выстроены вдоль старинной дороги и обладают особыми свойствами. Каждая костяшка расположена на координате xi и имеет магическую силу, равную hi, определяющую её способность влиять на другие костяшки.
Однажды юная волшебница Оля решила испытать силу этой цепи и толкнула первую костяшку. При падении костяшка выпускает магический импульс, который распространяется вперёд и заставляет падать все костяшки, находящиеся на координатах не больше, чем xi+hi. Каждая следующая костяшка, попавшая под действие импульса, действует аналогично, создавая эффект магической цепной реакции.
Строго говоря, при воздействии на костяшку на позиции xi будут задеты, и как следствие, выпустят уже свой магический импульс, все костяшки с такими координатами xj, что xi+hi≤xj.
К Оле решила присоединиться её подруга Яло. Она решила проверить, как поведут себя костяшки, если их толкнуть с другой стороны. Девочка толкнула последнюю костяшку, которая находилась на самой правой позиции. И вот что произошло.
Самая правая костяшка, которую толкнула Яло, выпустила магический импульс, который распространяется назад, заставляя падать костяшки, находящиеся на координатах не больших чем xi−hi. Иными словами, если костяшка на позиции xi падает, то она сама выпускает магический импульс, под воздействие которого попадают все костяшки, чьи координаты удовлетворяют условию xi−hi>xj.
Таким образом, костяшки, падающие с одной стороны, могут встретиться с костяшками, падающими с другой, при этом магические импульсы с двух сторон продолжат распространяться так же, как и до встречи. Теперь обе цепные реакции Оли и Яло идут навстречу друг другу, и вы очень хотите узнать, сколько же суммарно костяшек упадёт.
Формат входных данных
Первая строка содержит одно целое число N (2≤N≤105) количество волшебных костяшек.
Следующие 2N строк содержат два набора целых чисел:
Первые N строк содержат координаты костяшек xi (0≤xi≤109). Следующие N строк содержат магическую силу костяшек hi (0≤hi≤109). Гарантируется, что координаты образуют возрастающую последовательность (никакие две костяшки не имеют одинаковых координат).
Формат выходных данных
Выведите одно целое число общее число костяшек, которые упадут после удара.
Система оценки
Решения, правильно работающие при n≤1000, будут оценены не менее чем в 50 баллов.
Замечание
В первом примере первая костяшка, которую толкнула Оля, не достанет до следующей (т.к. её «высота» составляет всего 2), а поэтому от импульса слева упадёт только она. Стоящая на координате 8 костяшка, которую толкнула Яло, заденет костяшку, стоящую на координате 7, которая, в свою очередь, не заденет костяшку на координате 5, т.к. её «высота» равна 1. На рисунке ниже показаны костяшки до того, как их толкнули, и их итоговое состояние (красным отмечены места, которые «задела» хотя бы одна костяшка).
Ввод
4
1
5
7
8
2
3
1
1
Вывод
3
Задание 5. Покраска забора
Недавно Егор узнал, что средняя зарплата маляра в России составляет более ста тысяч рублей в месяц. Сейчас он получает немного меньше (примерно ноль рублей в месяц), а потому пошёл работать маляром.
В первый же день работы он получил свое первое задание покрасить забор, состоящий из k досок. Опишем этот процесс немного подробнее. Забор можно представить в виде k досок, стоящих в ряд. Слева от забора стоит телега, в которой есть n банок с краской, при этом i-й банки хватит ровно на ai досок.
Изначально Егор стоит слева от забора (прямо перед телегой), при этом в его руке нет банки с краской. Егор пока что не окончил вуз, поэтому набор его навыков ограничен:
Взять банку с краской. Если Егор стоит перед телегой, то он может взять в руку любую банку, в которой ещё осталась краска. Если у Егора уже была какая‑то банка в руке, то он возьмёт новую, а старую оставит у телеги. Это действие не занимает времени.
Сдвинуться вправо. После этого Егор перейдёт к следующей доске. Если Егор стоял у телеги, то после этого перемещения он будет стоять перед первой доской. При этом Егор не может сдвинуться вправо, если он уже у находится у последней доски. Это действие занимает 1 секунду.
Сдвинуться влево. После этого Егор перейдёт к предыдущей доске. Если Егор стоит у первой доски, то после этого перемещения он будет стоять перед телегой. Конечно же, Егор не может сдвинуться влево, если он стоит перед телегой. Это действие занимает 1 секунду.
Покрасить доску. Если Егор сейчас стоит перед непокрашенной доской и у него в руках есть банка с краской, то он может покрасить эту доску. Это действие занимает 1 секунду.
Раньше Егор был пасечником, а потому ему не понаслышке известна фраза «Время —— деньги!». Соответственно, он хочет как можно быстрее покрасить весь забор. Вы ведь помните, что Егор не окончил вуз? Именно поэтому вам придётся посчитать, какое минимальное время потребуется на покраску всего забора. Обратите внимание на то, что Егор имеет право закончить покраску в любом месте забора и что ему не надо после этого возвращаться к телеге.
Формат входных данных
В первой строке дано целое число k (1≤k≤109) количество досок в заборе.
Во второй строке дано целое число n (1≤n≤2⋅105) количество банок в телеге.
В следующих nn строках даны целые числа ai (1≤ai≤109) число досок, которые можно покрасить краской из банки с номером i.
Формат выходных данных
Выведите минимальное количество секунд, которое потребуется Егору для покраски всего забора. Если Егору не хватит краски для выполнения его задания, то выведите «−1» (без кавычек).
Замечание
Рассмотрим первый пример. В заборе всего пять досок. Чтобы покрасить его как можно быстрее, Егору нужно сначала взять третью банку, потом покрасить первые две доски на это у него уйдёт 4 секунды. Затем он должен вернуться назад и взять банку, которой хватит на три доски, на это ещё 2 секунды. Затем надо докрасить забор на это он потратит ещё 8 секунд, первые две из которых будет идти рядом с уже покрашенными досками. Итого потребуется 4+2+8=14 секунд.
Во втором примере у Егора есть возможность покрасить только одну доску, но этого не хватит на покраску всего забора.
Ввод
5
3
1
3
2
Вывод
14
Ввод
100
1
1
Вывод
-1
Ввод
6
3
5
5
5
Вывод
14
Ответ:
#include <iostream>#include <vector>#include <random>#include <string>#include <algorithm>using namespace std;int main() {long long a, b;cin >> a >> b;long long quotient = a / b;long long result = (quotient * quotient — 1) * b;cout << result << endl;return 0;