СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Задача номер 27

Нажмите, чтобы узнать подробности

Разработано в Мезенском педагогическом колледже.

Просмотр содержимого документа
«Задача номер 27»

Задача 27, ЕГЭ по информатике

В этой задаче, из каждой пары положительных чисел, необходимо выбрать максимальные и сложить их, так мы получим максимальную сумму. По условию, наша сумма не должна делиться на 5, но должна быть максимально возможной. Если максимальная сумма будет кратна 5, нужно взять сумму поменьше, для этого мы будем находить минимальную разницу между парами, эта разница должна быть больше нуля и не кратная 5. Если невозможно найти такую сумму, нужно чтобы программа в качестве ответа выдавала 0.

Для того чтобы исключить две переменные max и min, будем использовать функцию abs, которая вычисляет модуль числа, например |2-5|=|-3|=3, |7-2|=|5|=5

var

{объявляем переменные}

n:integer;

{количество пар}

a, b:integer;

{пары чисел, которые мы будем вводить}

s:integer;

{максимальная сумма}

raz:integer;

{минимальная разница между парами чисел}

i:integer;

{переменная для цикла}

begin

{начало программы}

readln(n);

{вводим количество пар}

s:=0;

{обнуляем переменную s}

raz:=10001;

{к разнице присваиваем максимально возможную разницу т. к. максимальное число 10 000, к переменной отвечающей за разницу присваиваем 10 000+1}

for i:= 1 to n do

{цикл с параметром i от 1 до n (n – количество пар, которое мы вводим вначале программы) этот цикл находит максимальную сумму и минимальную разницу между парами чисел}

begin

{начало чикла}

readln(a ,b);

{вводим пару натуральных чисел через пробел}

if ab then

{ищем максимальное число из пары введенных чисел (если число a больше b т. е. в паре чисел максимальное a)}

s:=s+a

{к сумме присваиваем a}

else s:=s+b;

{иначе (если число b больше a т. е. в паре чисел максимальное b) к сумме присваиваем b}

if (razabs(a-b)) and (abs(a-b)0) and (abs(a-b) mod 50) then

{если (разница между парами чисел меньше чем значение переменной raz) и (разница между парами чисел не равна 0) и (разница между парами чисел не кратна 5) то}

raz:=abs(a-b);

{к нашей переменной raz отвечающей за минимальную разницу, присваиваем разницу пар чисел a и b}

end;

{конец цикла}

if (s mod 5)=0 then

{проверяем, кратна ли 5 наша максимальная сумма, если кратна, то}

begin

{начало}

if raz10000 then

{если наша минимальная разница больше максимально возможного числа, то}

s:=0

{к максимальной сумме присвоить 0}

else s:=s-raz;

{иначе, если минимальная разница raz меньше максимально возможного числа, то от максимальной суммы отнимаем минимальную разницу}

end;

{конец условного оператора if}

writeln(s)

{выводим на экран результат работы программы (максимальную сумму или 0, если максимальную сумму не кратную пять найти не удалось)}

end.

{конец программы}