Содержание верного ответа
(допускаются иные формулировки ответа, не искажающие его смысла)
Задание Б.
Cначала рассмотрим решение для более общего задания (вариант Б).
Решение 1.
Чтобы получить максимально возможную сумму, будем брать из каждой пары самое большое число. Если полученная при этом сумма будет делиться на её необходимо уменьшить. Для этого достаточно в одной из пар, где числа имеют разные остатки при делении на заменить ранее выбранное число на другое число из той же пары. При этом разница между числами в паре должна быть минимально возможной. Если во всех парах оба числа имеют одинаковый остаток при делении на получить нужную сумму невозможно. Замечание для эксперта. От ученика не требуется доказывать правильность
предложенного алгоритма. Для удобства экспертов докажем, что при наличии решения достаточно заменить одно число. Пусть это не так, т.е. найдутся две такие пары, от которых в искомую сумму входят не бόльшие в своих парах числа и а меньшие числа из соответствующих пар: и При этом имеет остаток от деления на отличный от остатка от деления на числа (иначе мы могли бы включить в сумму вместо ). Но это означает, что хотя бы одно из чисел тоже при делении на имеет остаток, отличный от соответствующего
максимального числа пары. Значит, оптимальной является замена только
одного из таких чисел. Программа читает все данные один раз. В каждой паре определяется большее число и разность между бόльшим и меньшим числами пары После
обработки очередной пары программа хранит два числа: — сумму всех
максимальных элементов прочитанных пар и — наименьшую
возможную разность не кратную Окончательным ответом будет
значение если оно не делится на и в противном случае. Если делится на а не определено (разность между числами во всех парах кратна ), ответ в соответствии с условиями задачи считается равным Программа 1. Пример правильной и эффективной программы для задания Б на языке Паскаль
const
aMax = 10000;
var
N: longint;
a, b: longint;
Max: longint;
Min: longint;
s: longint;
D_min: longint;
i: longint;
begin
s := 0;
D_min := aMax + 1;
readln(N);
for i := 1 to N do begin
readln(a, b);
if a>b then begin Max:=a; Min:=b end
else begin Max:=b; Min:=a end;
s := s + Max;
if ((Max - Min) mod 3 > 0) and (Max - Min < D_min)
then D_min := Max - Min
end;
if s mod 3 = 0 then begin
if D_min > aMax then s := 0
else s := s – D_min
end;
writeln(s)
end.
Решение 2.
Возможно и решение, основанное на другой идее, а именно будем хранить
для каждого прочитанного набора пар три суммы () – максимальные
суммы элементов пар, имеющие при делении на соответственно остатки
и При обработке очередной пары () эти суммы обновляются. Для
этого достаточно рассмотреть суммы и для каждого возможного остатка от деления на выбрать в качестве
нового значения или значение наибольшей из указанных сумм,
дающей данный остаток. Окончательным ответом будет бόльшая из сумм
и Эта идея приводит к более громоздкой реализации, но все основные требования по эффективности в ней выполнены, поэтому подобное решение при отсутствии ошибок можно оценить максимальным количеством баллов.
Ниже приводится пример основанной на этом принципе программы на языке Паскаль.
Замечание для эксперта. В приведённом ниже решении для хранения используется массив Это упрощает реализацию, однако решение, в котором используются простые переменные, также допустимо. Не следует снижать баллы только за то, что в программе использованы простые переменные, а не массив, как в привёденном ниже примере.
Программа 2. Пример правильной и эффективной программы для задания Б на языке Паскаль
var
N: longint;
a: array[1..2] of longint;
s_old, s_new: array[0..2] of longint;
i, j, k, r: longint;
begin
readln(N);
for j := 0 to 2 do
s_old[j] := 0;
for i := 1 to N do begin
readln(a[1], a[2]);
for j := 0 to 2 do
s_new[j] := 0;
for k := 1 to 2 do begin
for j := 0 to 2 do begin
if (s_old[j] > 0) or (i = 1) then begin
r := (s_old[j] + a[k]) mod 3;
if s_new[r] < s_old[j] + a[k] then
s_new[r] := s_old[j] + a[k]
end
end
end;
s_old := s_new
end;
if s_new[1] > s_new[2] then
writeln(s_new[1])
else
writeln(s_new[2]);
end.
Замечание для эксперта. Ученик может «перестраховаться» и явно проверить, что хотя бы одно из чисел отлично от
Эта проверка излишня (см. комментарий в конце программы), однако она не
влияет на порядок роста времени программы. Снижать баллы за такую
избыточную проверку не следует. Задание А.
Это задание можно выполнить «в лоб»: сохранить в массиве все исходные данные, перебрать все возможные способы выбора одного элемента из каждой пары и найти максимальную сумму, соответствующую условиям задачи.
Ниже приводится пример такого решения
Пример решения задачи А на языке Паскаль
var
a: array[1..6, 1..2] of longint;
i1, i2, i3, i4, i5, i6: longint;
s, sMax: longint;
begin
for i1:= 1 to 6 do readln(a[i1,1], a[i1,2]);
sMax := 0;
for i1:=1 to 2 do
for i2:=1 to 2 do
for i3:=1 to 2 do
for i4:=1 to 2 do
for i5:=1 to 2 do
for i6:=1 to 2 do begin
s:=a[1,i1]+a[2,i2]+a[3,i3]+a[4,i4]+a[5,i5]+a[6,i6];
if (s mod 3 <> 0) and (s > sMax) then sMax := s
end;
writeln(sMax)
end.
Указания по оцениванию
Предварительные замечания.
1. В задаче есть два задания (А и Б). Соответственно, ученик может представить две программы. В каждой из программ должно быть указано, решением какого из заданий она является. Если в работе представлена одна программа, то в ней также должно быть указано, решением какого из заданий она является.
2. Если ученик не указал, к какому заданию относится программа, или можно предположить, что ученик ошибся в идентификации программ, необходимо следовать приведённым ниже инструкциям.
Случай 2.1. Ученик представил только одну программу.
Следует рассматривать программу как решение задания Б и оценивать её по соответствующим критериям.
Случай 2.2. Ученик представил две программы, но указание задания есть только для одной из программ.
Следует рассматривать вторую программу как ответ на оставшееся задание.
Случай 2.3. Ученик представил две программы; ни для одной из них задание не указано, или в обоих решениях указано одно и то же задание.
Следует первую (по порядку в представленных учеником материалах) программу рассматривать как ответ на задание А, а вторую – как ответ на задание Б.
Случай 2.4. Ученик представил более двух программ.
Следует рассматривать только две последние программы и соотносить их с заданиями по правилам 2.1–2.3.
Случай 2.5. Решение, представленное в качестве решения задания А, по критериям для задания Б может быть оценено в или балла. При этом решение, представленное в качестве решения задания Б, оценено меньшим баллом. Следует считать, что ученик перепутал обозначения заданий и оценивать решение, представленное как решение задания А, по критериям задания Б.
НАПОМИНАЕМ! Итоговый балл за задачу – это бόльший из баллов, полученных учеником за каждое из двух представленных решений.
Пояснения для проверяющих.
1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то считается, что учеником допущена опечатка, и решение оценивается по критериям для задания А.
В качестве решения задания А может быть представлена программа, которая решает задачу при произвольном количестве входных данных (как в задании Б), осуществляя полный перебор всех вариантов. Такая программа неэффективна по времени, поэтому она должна оцениваться баллами. 2. Два задания (и, соответственно, возможность для экзаменуемого представить две программы) дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить балла, а затем приступить к поиску более эффективного решения. 3. Приведённые в п. 2.1–2.5 правила имеют целью избежать снижения баллов из-за того, что ученик перепутал обозначения заданий.
Общие принципы оценивания решений
балла ставится за эффективную и правильно работающую программу, решающую задачу в общем случае (задача Б). При этом программа может содержать до трёх синтаксических ошибок («описок»). балла ставится в случае, когда фактически задача решена и решена эффективно по времени, возможно, с хранением всех входных данных в массиве, но количество «описок» более трёх (но не более пяти) и допущено не более одной содержательной ошибки, не позволяющей усомниться в том, что экзаменуемый правильно придумал алгоритм. балла ставится, если программа, решающая задачу Б, в дополнение к неточностям, которые перечислены выше, работает неэффективно по времени и/или допущено до трёх упомянутых выше содержательных ошибок. Количество допустимых «описок» – до семи. балла также ставится за правильное решение упрощенной задачи (задача А). балл ставится, если программа написана неверно, но из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Далее эти общие принципы уточнены.
Порядок назначения третьего эксперта
В соответствии с Порядком проведения государственной итоговой аттестации по образовательным программам среднего общего образования (приказ Минобрнауки России от зарегистрирован Минюстом России ) «61. По результатам первой и второй проверок эксперты независимо друг от друга выставляют баллы за каждый ответ на задания экзаменационной работы ЕГЭ с развёрнутым ответом...
62. В случае существенного расхождения в баллах, выставленных двумя экспертами, назначается третья проверка. Существенное расхождение в баллах определено в критериях оценивания по соответствующему учебному предмету.
Эксперту, осуществляющему третью проверку, предоставляется информация о баллах, выставленных экспертами, ранее проверявшими экзаменационную работу».
Если расхождение составляет и более балла за выполнение любого из
заданий, то третий эксперт проверяет ответы только на те задания,
которые вызвали столь существенное расхождение.