Елена Теплоухова
ЕГЭ 2021. Информатика. Программирование. Как решать задачи ExamBegin 1-80?
Введение
В ЕГЭ по предмету информатика одной из главных тем является программирование. Тема сложная для самостоятельного изучения и требующая понимания ее сути. В программе Паскаль.ABC для тренировки представлены сотни задач различных уровней сложности. Вроде бы столько возможностей хорошо подготовиться к ЕГЭ, много систематизированных заданий – берите и решайте. Но, прочитывая задачи, вы понимаете, что не знаете как их решить. На занятиях с репетитором вы разбирали подобные задачи, но немного измененные условия в задаче вводят в ступор. И появляется страх, что на экзамене попадется именно эта формулировка задачи.
Вы начинаете поиск подобных задач на программирование, которыми пестрят книги и сайты по подготовке к ЕГЭ, но объяснения представлены сложными способами, мало пояснений к решениям, не все нюансы разных условий задач отражены. После поисков в интернете, зачастую безрезультатных, и блужданий по сомнительным форумам, чаще всего приходится ждать следующей консультации с репетитором. Все, что вам нужно в этой ситуации для экономии времени и денег – это иметь простые и понятные решения, чтобы решать любые формулировки заданий и понимать суть их решения. Это дает уверенность в своих силах, систематизирует знания и формирует опыт решения таких задач.
Работая учителем информатики, я столкнулась с необходимостью систематизировать свои знания по теме программирование. Многие задачи оказались для меня хорошим поводом углубиться в эту тему, найти более простые и понятные способы решения. Моей целью было не только прорешать все задания, но сгруппировать их – такая систематизация позволит намного быстрее усвоить алгоритмы решения и безошибочно определить – какой путь решения выбрать для той задачи, с которой вы столкнулись. Результатом систематизации стал сборник задач, выстроенный от самых простых задач до задач повышенной сложности. В нем представлены решения 80 задач, что собраны для тренировки к заданиям ЕГЭ по теме программирование.
Сборник позволит вам с минимальными временными и финансовыми затратами на репетитора самим освоить тему. Он выстроен таким образом, что вы ощутите себя на индивидуальном занятии и сможете продвигаться в своем темпе.
Условные операторы и циклы
ExamBegin1
На вход подаются два целых числа; числа расположены в одной строке. Вывести вначале максимальное, а затем минимальное из них. Числа должны выводиться в одной строке и разделяться одним пробелом.
uses PT4Exam;
var
a, b: integer;
begin
Task('ExamBegin1');
Read(a, b);
if a > b then Write(a, ' ', b)
else Write(b, ' ', a);
end.
ExamBegin2
На вход подаются три вещественных числа; числа расположены в одной строке. Вывести вначале минимальное, а затем максимальное из них. Каждое число должно выводиться на новой строке и снабжаться комментарием: «MIN=» для минимального, «MAX=» для максимального.
uses PT4Exam;
var
x, max, min: real;
i: integer;
begin
Task('ExamBegin2');
min := maxreal;
max := -maxreal;
for i := 1 to 3 do
begin
read(x);
if x > max then max := x;
if x < min then min := x;
end;
WriteLn('MIN=', min:4:2);
WriteLn('MAX=', max:4:2);
end.
ExamBegin3
На вход подаются четыре целых числа; каждое число вводится с новой строки. Вывести минимальное из них.
uses PT4Exam;
var
i, a, min: integer;
begin
Task('ExamBegin3');
min := 32768;
for i := 1 to 4 do
begin
Read(a);
if a < min then min := a;
end;
Write(min);
end.
ExamBegin4
На вход подаются три целых числа – коэффициенты A, B, C квадратного уравнения A·x2 + B·x + C = 0 (A не равно 0). Каждое число вводится с новой строки. Найти корни данного уравнения. Корни вычисляются как вещественные числа. Если имеются два различных корня, то вначале выводить меньший, а затем больший (каждый на новой строке). Если корней нет, то вывести текст «NO».
uses PT4Exam;
var
a, b, c: integer;
d, x, x1, x2: real;
begin
Task('ExamBegin4');
Read(a, b, c);
d := sqr(b) – 4 * a * c;
if d < 0 then Write('NO')
else begin
if d = 0 then begin
x := -(b / (2 * a));
WriteLn(x:4:2);
end
else begin
x1 := -(b + sqrt(d)) / (2 * a);
x2 := -(b – sqrt(d)) / (2 * a);
if x1 > x2 then begin
WriteLn(x2:4:2);
WriteLn(x1:4:2);
end
else begin
WriteLn(x1:4:2);
WriteLn(x2:4:2);
end;
end;
end;
end.
ExamBegin5
На вход подаются два целых положительных числа; каждое число вводится с новой строки. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A, где «mod» обозначает операцию взятия остатка от деления.
uses PT4Exam;
var
a, b: integer;
begin
Task('ExamBegin5');
Read(a, b);
while a <> b do
begin
if a > b then a := a – b
else b := b – a;
end;
Write(a);
end.
ExamBegin6
На вход подаются два целых положительных числа; числа расположены в одной строке. Найти их наименьшее общее кратное (НОК), используя формулу НОК(A, B) = A·(B/НОД(A, B)), где НОД(A, B) – наибольший общий делитель, а символ «/» обозначает операцию деления нацело. НОД находить с помощью алгоритма Евклида (см. задание ExamBegin5).
uses PT4Exam;
var
a, b, nod: integer;
begin
Task('ExamBegin6');
Read(a, b);
nod := a * b;
while a <> b do
begin
if a > b then a := a – b
else b := b – a;
end;
Write(nod div a);
end.
ExamBegin7
На вход подаются два целых положительных числа: A и D (2 ≤ D ≤ 9); числа расположены в одной строке. Вывести строку, изображающую запись числа A в системе счисления с основанием D(полученная строка не должна содержать незначащих нулей).
uses PT4Exam;
var
a, b, rem, num, k: integer;
begin
Task('ExamBegin7');
Read(a, b);
num := 0; k := 1;
while a > 0 do
begin
rem := a mod b;
a := a div b;
num := num + rem * k;
k := k * 10;
end;
Write(num);
end.
ExamBegin8
На вход в первой строке подается целое число D (2 ≤ D ≤ 9), а во второй строке – текст, изображающий запись целого положительного числа A в системе счисления с основанием D. Вывести число A в десятичной системе счисления.
uses PT4Exam;
var
a, num, k, m: integer;
b: string;
begin
Task('ExamBegin8');
Readln(a);
Readln(b);
num := 0; m := 1;
while length(b) > 0 do
begin
k := StrToInt(Copy(b, length(b), 1));
Delete(b, length(b), 1);
num := num + k * m;
m := m * a;
end;
Write(num);
end.
ExamBegin9
На вход подается целое положительное число. Если оно является степенью числа 2, то вывести текст «YES», иначе вывести «NO».
uses PT4Exam;
var
a, x: integer;
num: boolean;
begin
Task('ExamBegin9');
ReadLn(a);
x := 1; num := false;