
- •Содержание
- •В ожидании Нового года Условие
- •Золотые яйца Условие
- •Отгадай слово Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Инкубатор Бабы Яги Условие
- •Расписные салфеточки Условие
- •Сколько прошло дней? Условие
- •Арифметическая прогрессия Условие
- •Нарезка фантиков Условие
- •Шагающий циркуль Условие
- •Волшебные горшочки Бабы Яги Условие
- •Стиральный вопрос
- •Чудик в Цветландии Условие
- •Столовая Условие
- •Рейтинг студента Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Лена и зеркало
- •Макет города Условие
- •Мосты-горки Условие
Содержание
Содержание 1
В ожидании Нового года 2
Золотые яйца 3
Куб со спицами 5
Отгадай слово 6
Инкубатор Бабы Яги 9
Сумма 0, произведение N 11
Отрезки с наложением 12
Расписные салфеточки 14
Сколько прошло дней? 16
Арифметическая прогрессия 18
Нарезка фантиков 21
Шагающий циркуль 23
Волшебные горшочки Бабы Яги 25
Стиральный вопрос 26
Чудик в Цветландии 31
Столовая 33
Рейтинг студента 36
Лена и зеркало 39
Макет города 41
Мосты-горки 43
В ожидании Нового года Условие
31 декабря. Марфа Геннадьевна и Глафира Сергеевна уже приготовили новогодний ужин, и теперь они с нетерпением ждут Нового года.
Каждые 5-10 минут они смотрят на часы и вычисляют, сколько часов и минут осталось до Нового года. При этом на вычисление у них уходит много времени.
Поэтому им хотелось бы иметь компьютерную программу, принимающую на вход текущее время (часы и минуты) и вычисляющую, сколько времени осталось до Нового года.
Число секунд в текущем времени принять равным 0.
Формат входного файла
Входной файл содержит текущее время — часы и минуты.
Формат выходного файла
Требуется вывести в выходной файл, сколько времени осталось до Нового года — часы и минуты.
Ограничения
Часы от 0 до 23. Минуты от 0 до 59.
Примеры тестов
-
№
Входной файл
Выходной файл
1
12 0
12 0
2
23 59
0 1
3
22 25
1 35
Разбор
Если число минут в текущем времени равно 0, то до Нового года осталось (24 − H) часов и 0 минут, где H — число часов в текущем времени.
Если число минут в текущем времени не равно 0, то до Нового года осталось (24 − H − 1) часов и (60 − M) минут, где M — число минут в текущем времени.
program new_year;
var
h, m: integer;
rh, rm: integer;
begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
read(h, m);
if (m = 0) then
begin
rh := 24-h;
rm := 0;
end
else
begin
rh := 24-h-1;
rm := 60-m;
end;
write(rh, ' ', rm);
close(input);
close(output);
end.
Золотые яйца Условие
В некотором царстве, некотором государстве жила-была Марфа Геннадьевна. И была у Марфы Геннадьевны курочка, которая, кроме обычных яиц, иногда несла золотые яйца.
Марфа Геннадьевна заметила, что очень часто золотое яйцо появляется в полнолуние, и решила исследовать данное явление. Она записала даты появления золотых яиц в течение года. Теперь Марфа Геннадьевна хочет подсчитать, сколько раз курица снесла золотое яйцо в полнолуние.
У Марфы Геннадьевны есть волшебный компьютер, который может выполнить любую программу. Чего нет у Марфы Геннадьевны — так это волшебного программиста, который мог бы написать любую программу.
Помогите Марфе Геннадьевне. Напишите программу, принимающую на вход даты появления золотых яиц и вычисляющую, сколько раз золотое яйцо появилось в полнолуние.
В государстве, в котором живёт Марфа Геннадьевна, для летоисчисления используются 12 месяцев, в каждом месяце ровно 30 дней. Полнолуние происходит каждые 29 дней: 1 января, 30 января, 29 февраля и т.д.
Формат входного файла
Входной файл содержит целое число N — количество появлений золотых яиц в течение года.
Далее следуют даты появления золотых яиц — пары целых чисел: день и месяц.
Во входном файле не может быть двух одинаковых дат.
Формат выходного файла
Выходной файл должен содержать целое число — количество появлений золотых яиц в полнолуние.
Ограничения
1 ≤ N ≤ 100
Примеры тестов
-
№
Входной файл
Выходной файл
1
3
2 1
1 1
29 2
2
2
2
28 3
29 3
1
Разбор
Для каждой даты появления золотого яйца необходимо проверить, было ли в этот день полнолуние. Если было, то нужно увеличить значение переменной-счётчика на 1.
Как проверить, было ли в данный день полнолуние? Заметим, что полнолуние происходит 1 января, а также в те дни, когда сумма дня и месяца равняется 31.
program gold_eggs;
var
d,m: array[1..100] of integer;
n: integer;
cnt: integer;
i, j: integer;
begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
read(n);
for i := 1 to n do
read(d[i], m[i]);
cnt := 0;
for i := 1 to n do
begin
if ((d[i] = 1) and (m[i] = 1) or (d[i]+m[i] = 31)) then
inc(cnt);
end;
write(cnt);
close(input);
close(output);
end.
Куб со спицами
Условие
Возьмём N3 одинаковых кубиков. Раскрасим кубики в N цветов так, чтобы в каждый цвет было раскрашено ровно N2 кубиков. Сложим из всех кубиков один большой куб. Начнём протыкать этот куб спицами параллельно его рёбрам. Любая спица пройдёт сквозь ровно N кубиков.
Требуется сложить куб так, чтобы любая спица проходила сквозь кубики всех N цветов.
Формат входного файла
Во входном файле содержится единственное натуральное число N.
Формат выходного файла
Выходной файл должен содержать номера цветов кубиков, перечисленные в порядке слева направо сверху вниз от ближней грани к дальней. Если существует несколько решений, выведите любое из них.
Ограничения
1 ≤ N ≤ 100
Примеры тестов
-
№
Входной файл
Выходной файл
1
2
1 2
2 1
2 1
1 2
Разбор
Сперва рассмотрим задачу с квадратом: требуется расставить в клетках квадратной таблицы N N числа от 1 до N так, чтобы в каждой строке и в каждом столбце встречались все N чисел (каждое число по одному разу). Таблица, заполненная таким образом, называется латинским квадратом.
Как построить латинский квадрат N N? Запишем в первой строке числа от 1 до N. Во второй строке запишем числа на единицу больше, чем стоящие выше. При этом, если сверху стоит число N, то снизу будет стоять 1. Следующие строки заполняются аналогично.
1 2 3
2 3 1
3 1 2
Заметим, что число, стоящее в i-й строке и j-м столбце, можно вычислить по формуле 1 + (i + j) mod N.
Перейдём к задаче с кубом. Будем заполнять куб от ближней грани к дальней. Ближайшую к нам грань заполним так, как мы заполняли квадрат, а следующую грань заполним следующим образом: прибавим к числам, стоящим на ближайшей грани, единицу. Следующие грани заполняются аналогично.
1 2 3
2 3 1
3 1 2
2 3 1
3 1 2
1 2 3
3 1 2
1 2 3
2 3 1
program cube;
var
n: integer;
i, j, k: integer;
begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
read(n);
for k := 1 to n do
begin
for j := 1 to n do
begin
for i := 1 to n do
write(1 + (i+j+k) mod n, ' ');
writeln;
end;
end;
close(input);
close(output);
end.