Задания
Версия для печати и копирования в MS Word
Тип Д27 C4 № 11327
i

На вход даны пары чисел. Нужно вы­брать из каж­дой пары по од­но­му числу так, чтобы сумма всех вы­бран­ных чисел не была крат­на 4 и при этом была мак­си­маль­но воз­мож­ной. На­пи­ши­те про­грам­му, вы­во­дя­щую такую сумму на экран. Если же ее не­воз­мож­но по­лу­чить, вы­ве­ди­те 0. Баллы на­чис­ля­ют­ся за ту из под­за­дач, что ре­ше­на на боль­шее ко­ли­че­ство бал­лов. За­да­ча А дает 2 балла, за­да­ча Б - 4 балла. В за­да­че А при­ве­ди­те не­эф­фек­тив­ный ал­го­ритм. При ре­ше­нии ука­зы­вай­те, какую под­за­да­чу де­ла­е­те. За ал­го­ритм, не­эф­фек­тив­ный по вре­ме­ни ИЛИ па­мя­ти, да­ет­ся 3 балла, по вре­ме­ни И па­мя­ти - 2 балла.

 

За­да­ча А. Ко­ли­че­ство пар из­вест­но за­ра­нее и равно 6. Числа не пре­вы­ша­ют 30 000.

 

За­да­ча Б. Ко­ли­че­ство пар N не из­вест­но за­ра­нее и может при­ни­мать зна­че­ния 2 <= N <= 200 000. На вход по­да­ет­ся сна­ча­ла ко­ли­че­ство пар, затем сами пары. Числа по мо­ду­лю не пре­вы­ша­ют 30 000.

Спрятать решение

Ре­ше­ние.

Из ма­те­ма­ти­ки из­вест­но, что при сло­же­нии чисел их остат­ки от де­ле­ния на число скла­ды­ва­ют­ся, а при вы­чи­та­нии  — вы­чи­та­ют­ся. Из каж­дой пары чисел нужно вы­брать мак­си­маль­ное и их сло­жить.

Если эта сумма будет де­лить­ся на 4; одно из сла­га­е­мых надо за­ме­нить на его пару так, чтобы сумму всё равно не де­ли­лась на 4. Найдём сумму S мак­си­маль­ных чисел из пар и наи­мень­шую раз­ность (max - min) не де­ля­щу­ю­ся на 4. Тогда если сумма де­лит­ся на 4 до­ста­точ­но вы­честь эту раз­ность. Если и сумму найти не удаётся, вы­ве­дем 0.

 

За­да­ние Б.

При­ведём при­мер ре­ше­ния на языке C++

#include <io stream>

using namespace std;

   int main()

{ int N;

   int s, a, b, raznost, max = -60001;

   cin >> N; s = 0;

   for(int i=1; i<=N; i++)

   { cin >> a >> b;

      if(a > b)

      { s+=a; raznost=b-a;}

      else {s+=b; raznost=a-b;}

      if((raznost > max)&&(raznost%4!=0))

         max = raznost;

}

   if(s%4==0)

{if(max==-10001)

      count<<0;

   else

      count << s+max;

}

else count << S;

return 0;

}

 

За­да­ние Б.

При­ведём при­мер ре­ше­ния на языке Пас­каль:

var

i, n, x, y, sum, min_r: longint;

begin

 readln(n);

 min_r:=10001;

 sum:=0;

 for i:=1 to n do

 begin

  readln(x,y);

  if x > y then sum:=sum + x else sum:= sum + y;

  if (abs(x - y) mod 4 <> 0) and (abs(x - y) < min_r) then min_r:= abs(x - y);

 end;

 

 if (sum mod 4 <> 0) then writeln(sum) else

  if (sum mod 4 = 0) and (min_r <> 10001) then writeln (sum - min_r) else writeln(0);

 

end.

 

При­во­дим эф­фек­тив­ное ре­ше­ние Игоря Ку­да­ше­ва на Python 3.

n = int(input())

d = 30001

s = 0

for i in range(n):

    a, b = map(int, input().split())

    ma = max(a, b)

    mi = min(a, b)

    if (ma - mi) % 4 != 0 and ma - mi < d: d = ma - mi

    s += ma

if s % 4 == 0:

    if d == 30001: s = 0

    else: s -= d

print(s)

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы

Про­грам­ма пра­виль­но ра­бо­та­ет для любых вход­ных дан­ных про­из­воль­но­го раз­ме­ра и на­хо­дит ответ, не со­хра­няя вход­ные дан­ные в мас­си­ве. До­пус­ка­ет­ся на­ли­чие в тек­сте про­грам­мы одной син­так­си­че­ской ошиб­ки: про­пу­щен или не­вер­но ука­зан знак пунк­ту­а­ции, не­вер­но на­пи­са­но или про­пу­ще­но за­ре­зер­ви­ро­ван­ное слово языка про­грам­ми­ро­ва­ния, не опи­са­на или не­вер­но опи­са­на пе­ре­мен­ная, при­ме­ня­ет­ся опе­ра­ция, не­до­пу­сти­мая для со­от­вет­ству­ю­ще­го типа дан­ных (если одна и та же ошиб­ка встре­ча­ет­ся не­сколь­ко раз, то это счи­та­ет­ся за одну ошиб­ку).

4

Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 4 балла, при этом про­грам­ма ра­бо­та­ет верно, время ра­бо­ты ли­ней­но за­ви­сит от N, но раз­мер ис­поль­зу­е­мой па­мя­ти за­ви­сит от ко­ли­че­ства точек. На­при­мер, вход­ные дан­ные за­по­ми­на­ют­ся в мас­си­ве или дру­гой струк­ту­ре дан­ных, раз­мер ко­то­рой со­от­вет­ству­ет числу N.

До­пус­ка­ет­ся одна из сле­ду­ю­щих оши­бок.

1. Про­пу­щен­ная или не­вер­ная ини­ци­а­ли­за­ция ко­ли­че­ства точек. В не­ко­то­рых язы­ках и си­сте­мах про­грам­ми­ро­ва­ния (на­при­мер, в Бей­си­ке) все пе­ре­мен­ные после со­зда­ния имеют зна­че­ние 0.

В этом слу­чае от­сут­ствие ини­ци­а­ли­за­ции нель­зя счи­тать ошиб­кой.

2. Не­вер­ные срав­не­ния, в ре­зуль­та­те ко­то­рых учи­ты­ва­ют­ся точки, ле­жа­щие на осях ко­ор­ди­нат.

3. Учёт од­но­го тре­уголь­ни­ка не­сколь­ко раз из-за раз­ной по­сле­до­ва­тель­но­сти пе­ре­чис­ле­ния вер­шин (на­при­мер, от­сут­ствие де­ле­ния на 2 в ре­ше­нии, ана­ло­гич­ном при­ведённому выше).

4. Учёт тре­уголь­ни­ков, со­дер­жа­щих одну и ту же вер­ши­ну два­жды (на­при­мер, от­сут­ствие вы­чи­та­ния в ре­ше­нии, ана­ло­гич­ном при­ведённому выше).

До­пус­ка­ет­ся на­ли­чие от одной до трёх син­так­си­че­ских оши­бок, опи­сан­ных в кри­те­ри­ях на 4 балла.

3

Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 3 или 4 балла, при этом про­грам­ма ра­бо­та­ет верно, эф­фек­тив­но или нет. В част­но­сти, в 2 балла оце­ни­ва­ют­ся пе­ре­бор­ные ре­ше­ния, в ко­то­рых все ис­ход­ные дан­ные со­хра­ня­ют­ся в мас­си­ве, рас­смат­ри­ва­ют­ся все воз­мож­ные тре­уголь­ни­ки, из ко­то­рых вы­би­ра­ют­ся под­хо­дя­щие. До­пус­ка­ет­ся на­ли­чие не­сколь­ких со­дер­жа­тель­ных оши­бок, опи­сан­ных в кри­те­ри­ях на 3 балла, и до пяти син­так­си­че­ских оши­бок, опи­сан­ных в кри­те­ри­ях на 4 балла.

2
ННе вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2, 3 или 4 балла, но про­грам­ма ра­бо­та­ет в от­дель­ных част­ных слу­ча­ях.1
Не вы­пол­не­ны кри­те­рии, поз­во­ля­ю­щие по­ста­вить 1, 2, 3 или 4 балла0
Мак­си­маль­ный балл4

Аналоги к заданию № 11323: 11327 Все

Источник: ЕГЭ 16.06.2016 по ин­фор­ма­ти­ке. Ос­нов­ная волна. Ва­ри­ант 52 (Часть 2)