ol / материалы для учителей
.docМатериалы для проведения школьного этапа олимпиады
по информатике, 2010-2011 учебный год
-
Задача «Ход конем».
Оценка 15 баллов
На пустой шахматной доске в одной из клеток стоит шахматный конь.
Напишите программу, которая выводит на экран список клеток, которые конь может достичь за один ход из данной клетки.
Формат входных данных:
На вход программы с клавиатуры поступают два целых числа x и y через пробел- координаты клетки, где стоит конь (1 <= x , y <= 8).
Формат выходных данных:
На выходе программы должен быть выведен в столбик список пар целых чисел –координаты клеток, достижимых конем из исходной клетки за один ход.
Примеры входных и выходных данных:
ввод |
вывод |
2 2 |
3 4 4 1 4 3 |
|
|
№ |
Тест |
Ответ |
Ответ участника |
Баллы за тест |
Баллы участника |
1 |
1 1 |
|
|
3 |
|
2 |
8 8 |
6 7 7 6 |
|
3 |
|
3 |
4 4 |
2 3 2 5
3 6 5 2 5 6 6 3 6 5 |
|
3 |
|
4 |
6 7 |
4 8 5 5 7 5 8 6 8 8 |
|
3 |
|
5 |
1 2 |
2 4 3 1 3 3 |
|
3 |
|
Методические рекомендации учителю:
Разность соответствующих координат клеток, соединенных ходом коня, равна 1 и 2 по модулю.
Решение:
var n,i,j,k,x,y,d1,d2:integer;
begin
readln(x,y);
for i:=1 to 8 do
for j:=1 to 8 do
begin
d1:=abs(i-x);
d2:=abs(j-y);
if ((d1=1) and (d2=2)) or ((d1=2) and (d2=1)) then writeln (i,' ',j);
end;
readln
end.
-
Задача «Кубы».
Оценка 10 баллов
Имеется некоторое прямоугольное помещение и кубы, которые предполагается в это помещение сложить.
Напишите программу, которая определяет, сколько кубов войдет в помещение
Формат входных данных:
С клавиатуры вводится четыре числа через пробел D, A, B, C, обозначающие соответственно длину ребра куба, длину, высоту и ширину помещения
Формат выходных данных:
На экран вывести в виде числа количество кубов, вмещающихся в помещение
ввод |
вывод |
1 3 3 3 |
27 |
2 4 4 8 |
16 |
№ |
Тест |
Ответ |
Ответ участника |
Баллы за тест |
Баллы участника |
1 |
2 6 8 4 |
24 |
|
1 |
|
2 |
2 3 5 9 |
8 |
|
3 |
|
3 |
5 100 100 1 |
0 |
|
3 |
|
4 |
4 50 40 5 |
120 |
|
3 |
|
Методические рекомендации учителю:
Kol=(A div D) * (B div D)*(C div D)
Решение:
var d,a,b,c,k:integer;
begin
readln(D,A,B,C);
k:=(a div d)*(b div d)*(c div d);
writeln(k);
readln
end.
-
Задача «Зарплата сотрудников».
Оценка: 10 баллов.
В фирме «Арго» 10 сотрудников. В базу данных фирмы заносится информация о зарплате сотрудников.
Напишите программу, которая определяет величину самой большой зарплаты сотрудников и выводит количество сотрудников с этой максимальной зарплатой.
Формат входных данных:
С клавиатуры вводятся 10 чисел, обозначающих зарплату 10 сотрудников в рублях.
Формат выходных данных:
На экран вывести в виде числа количество сотрудников с максимальной зарплатой.
ввод |
вывод |
24 21 23 22 25 24 21 24 25 23 |
2 |
№ |
Тест |
Ответ |
Ответ участника |
Баллы за тест |
Баллы участника |
1 |
10 9 8 7 10 9 8 7 10 9 |
3 |
|
5 |
|
2 |
1 2 3 4 5 6 7 8 9 10 |
1 |
|
5 |
|
Методические рекомендации учителю:
Решение задачи может быть организовано как с помощью массива, так и без него.
Решение:
const n = 10;
var i, countmax, maxz: integer;
date: integer;
begin
read (date);
maxz := date;
countmax := 1;
for i := 2 to n do
begin
read (date);
if maxz < date then
begin
maxz := date;
countmax := 1
end
else if date = maxz then inc (countmax)
end;
writeln (countmax);
end.