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

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

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

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

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

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

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

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

Итоги урока

Эффективное решение 27 задания ЕГЭ

Категория: Информатика

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

На ускорителе для большого числа частиц производятся замеры скоростей каждой из них, и т.д. ...Задача №27 вариант 3 из сборника экзаменационных заданий В. Р. Лещинер ЕГЭ 2020. Если физики измеряют скорости элементарных частиц, то совсем не для того, чтобы выявить наибольшую (или наименьшую) четную (или нечетную) сумму скоростей! :-)   ...задача на теорию чисел. Приведено две программы: 1-я неэффективное решение, второе - эффективное.  

Просмотр содержимого документа
«Эффективное решение 27 задания ЕГЭ»

const n=7;

var a:array[1..n] of longint;

i,min,nmin,cn,nz: longint;

begin

for i:=1 to n do

readln(a[i]);

cn:=0; nz:=0; nmin:=0;

min:=1000000000;

for i:=1 to n do begin

if a[i]=0 then nz:=i;

if((a[i]0) and (a[i] mod 2 0) and (a[i]

then begin min:= a[i]; nmin:=i end;

if (a[i]0) and (a[i] mod 2 0) then cn:=cn+1 end;

for i:=1 to n do

if ((cn mod 20) and (inz) and(i nmin))then writeln(i,' ')

else if ((cn mod 2=0) and (inz))then writeln(i,' ');

end.







const s=3;

var a:array[1..s] of longint;

n,a_,min,nmin,cn,i,j,nz:longint;

begin

readln(n);

cn:=0; nz:=0; nmin:=0; min:=1000000000;

for i:=1 to s do begin

readln(a[i]);

if a[i]=0 then nz:=i;

if (a[i]0) and (a[i] mod 2 0)then cn:=cn+1;

if ((a[i]0) and (a[i]mod 2 0) and (a[i]then

begin min:=a[i];nmin:=i end; end;

for i:=s+1 to n do begin

readln(a_);

for j:=1 to s-1 do

a[j]:=a[j+1];

a[s]:=a_;

if a[s]=0 then nz:=i;

if (a[s]0) and (a[s] mod 2 0)then cn:=cn+1;

if ((a[s]0)and (a[s] mod 2 0) and (a[s]then

begin min:=a[s]; nmin:=i end;end;

for i:=1 to n do

if (inz)and (cn mod 2 0) and (inmin) then writeln(i,' ')

else if (cn mod 2 =0) and (inz)then writeln(i,' ')

end.















const s=3;

var a:array[1..s] of longint;

n,a_,min,nmin,cn,i,j,nz:longint;

begin

readln(n);{число частиц}

cn:=0; nz:=0; nmin:=0; min:=1000000000;{инициализация первичная}

for i:=1 to s do begin

readln(a[i]);{вводим первые три элемена массива и по условию находим из них:}

if a[i]=0 then nz:=i; {номер нулевого элемента, если он есть}

if (a[i] mod 2 0)then cn:=cn+1; {количество нечетных}

if ((a[i]0) and (a[i]mod 2 0) and (a[i]then

begin min:=a[i];nmin:=i end; end;{наименьший элемент и его индекс}

{строка инициализации частично или полностью изменилась}

for i:=s+1 to n do begin {продолжаем работать с значениями скоростей

остальных частиц}

readln(a_);{ввод значения скорости следующей частицы}

for j:=1 to s-1 do begin{внутри 3-местного массива делаем сдвиг

на 1 место влево}

a[j]:=a[j+1];

a[s]:=a_ end;{на место последнего (3-го) помещаем вновь введенный}

if a[s]=0 then nz:=i; {и проверяем его (в цикле каждый) на предмет

исключения его из окончательного множества}

if (a[s] mod 2 0)then cn:=cn+1;

if ((a[s]0)and (a[s] mod 2 0) and (a[s]then

begin min:=a[s]; nmin:=i end;end;

{в конечном перечислении номеров частиц исключаем номер нулевого элемента

и номер минимального нечетного, если число нечетных нечетно}

for i:=1 to n do

if ((inz)and (cn mod 2 0) and (inmin))then write(i,' ')else

if (cn mod 2 =0)and (inz) then write(i,' ')

end.