Содержание:
- Объяснение заданий 6 ЕГЭ по информатике
- Решение заданий 6 ЕГЭ по информатике для 2021
- Решения подобных заданий прошлых лет
- Алгоритмы с циклами:
- Определить, какое число пропущено
- Простые задания с двумя линейными непересекающимися функциями
- Сумма или разность двух линейных функций (while s - n или while s + n)
- Поиск наименьшего/наибольшего целого введенного числа d
- Усложненные задания с двумя линейными функциями
- Арифметическая и геометрическая прогрессия
- Алгоритмы с массивами:
- Наибольшее или наименьшее значение переменной s (сумматор)
- Перестановка в массиве. Определить значение переменной
Объяснение заданий 6 ЕГЭ по информатике
Уровень сложности — базовый,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 4 минуты.
Проверяемые элементы содержания: Знание основных конструкций языка программирования, понятия переменной, оператора присваивания
Циклы:
"Задания этой линии можно решать двумя способами:
1) составить на черновике таблицу переменных, произвести пооператорное выполнение программы с записью изменяющихся значений в таблицу(трассировка);
2) определить количество итераций цикла и на основе этого вычислить результат.
Второй способ более быстрый, но он требует умения анализировать текст простой программы без её выполнения"
Типичные ошибки и рекомендации по их предотвращению:
"Экзаменуемый не учитывает последнюю итерацию цикла или, напротив, добавляет лишнюю. Это может быть связано с непониманием того, как обрабатывается условие цикла, или с ошибочной обработкой строгого неравенства как нестрогого или наоборот"
Массивы
"Рекомендуемый способ выполнения этого задания – трассировка"
Типичные ошибки и рекомендации по их предотвращению:
"Часто бывает, что при выполнении программы внутри итерации цикла изменяется значение не только текущего i-го элемента, но и следующего i+1-го, поэтому в следующей итерации текущий элемент будет иметь не то значение, что перед выполнением программы. Это нужно внимательно отслеживать, чтобы избежать ошибок. Кроме того, в определённых типах заданий может более сложно изменяться индекс текущего элемента, тут тоже требуется аккуратность и внимательность"
Алгоритмические структуры с циклами
В 6 задании ЕГЭ используются алгоритмические структуры с циклами. Рассмотрим их на примере языка Паскаль.
- Для знакомства и повторения цикла While, пройдите по ссылке.
- Для знакомства и повторения цикла For, пройдите по ссылке.
Сумма арифметической прогрессии
где:
- ai – i-ый элемент последовательности,
- d – шаг (разность) последовательности.
Сумма геометрической прогрессии
\[ q = \frac {b_{n+1}}{b_n} \]
\[ S_{n} = \frac {b_1-b_{n}*q}{1-q} \]
\[ S_{n} = b_{1} * \frac {1-q^n}{1-q} \]
- bi – i-ый элемент последовательности,
- q – знаменатель последовательности.
- Следует помнить, что сумма геометрической прогрессии не верна при q = 1
Массивы и матрицы
Для решения 19 задания ЕГЭ необходимо повторить следующие темы:
- Цикл for со счетчиком
- Работа с одномерными массивами
- Работа с двумерными массивами (матрицами)
- Понятие главной диагонали матрицы: элементы матрицы главной диагонали имеют совпадающие номера строки и столбца:
- если у элементов матрицы номер строки меньше номера столбца (i < j), то они расположены выше главной диагонали:
- если у элементов матрицы номер строки больше номера столбца (i > j), то они расположены ниже главной диагонали:
- побочная диагональ матрицы имеет формулу:
- Поскольку в цикле
s
увеличивается, а по условию задания следует найти наименьшее значениеs
, то можно начать сs=1
, постоянно увеличивая значениеs
на единицу во внешнем цикле. - Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная
s
меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, увеличив его всего на 1. Используем переменнуюS1
для этих целей. - Поскольку в цикле
s
увеличивается, и цикл работает пока s<=50, а по условию следует найти наибольшее значениеs
, то можно начать сs = 50
, постоянно уменьшая значениеs
на единицу во внешнем цикле. - Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная
s
меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значениеs
, уменьшив его всего на 1. Используем переменнуюS1
для этих целей. - Рассмотрим формулу:
- Рассмотрим алгоритм программы:
- Основные действия происходят в цикле, в котором k изменяется от 1 до n (n вводится в начале программы):
- В следующей строке кода происходит вычисление факториала числа k (в первой итерации цикла 1!, во второй итерации 2! и т.д.):
- Следующее выражение служит для подсчета x в степени k (переменной l в начале программы присваивается значение введенного x):
- Основная же формула сумматора заключена в строке:
- Видим, что в исходной заданной формуле в числителе отсутствует число 3.
- Т.е. исходная формула должна была выглядеть так:
- В цикле k увеличивается на единицу (k — счетчик). Соответственно, k будет равно количеству итераций (повторов) цикла. После завершения работы цикла значение k выводится на экран, т.е. это и есть результат работы программы.
- В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на
s < 1536
(2048 - 512 = 1536): - Цикл будет выполняться пока
s<1536
, а s увеличивается на 64, отсюда следует что итераций цикла (шагов) будет: - Соответственно, k = 24.
- Рассмотрим алгоритм. Цикл зависит от переменной s, которая уменьшается каждую итерацию цикла на 2.
- В цикле также присутствует счетчик - переменная i, которая увеличится на единицу ровно столько раз, сколько итераций (проходов) цикла. Т.е. в результате выполнения программы распечатается значение, равное количеству итераций цикла.
- Поскольку условие цикла зависит от s, нам необходимо посчитать, сколько раз сможет s уменьшиться на 2 в цикле. Для удобства подсчета изменим условие цикла на
while s > 0
; так как мы s уменьшили на 5, соответственно, изменим и 4-ю строку наs:=100
(105-5): - Для того чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2:
100 / 2 = 50 -> количество итераций цикла
- В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит, нам необходимо к результату (50) прибавить 1.
-
50 + 1 = 51
- Это значение и будет выведено на экран.
- Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.
- Цикл завершит свою работу когда s <= 0. Значит, необходимо посчитать сколько чисел 15 "войдет" в число 260, иными словами:
- Эта цифра должна соответствовать количеству шагов (итераций) цикла. Так как условие цикла строгое -
s > 0
, то увеличим полученное число на единицу: - Проверим на более простом примере. Допустим, изначально s=32. Два прохождения цикла даст нам s = 32/15 = 2,133... Число 2 больше 0, соответственно, цикл будет работать еще третий раз.
- В результате работы программа распечатывает значение переменной n (искомый результат). В цикле переменная n, изначально равная 0, увеличивается на 2. Так как цикл включает 18 итераций, то имеем:
- с каждым шагом цикла значение s увеличивается на 36, пока не станет больше 365; а значение n увеличивается в 2 раза, так что n=2k, где k – это число итераций цикла;
- поскольку s увеличивается на 36, конечное значение s должно быть равно 0+36*k , достигается при k=11 (и s=36*11=396);
- тогда n = 2k = 211 = 2048.
- В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
- Видим, что в условии разница между значениями составляет 5:
- Таким образом, чтобы определить количество итераций (шагов) цикла, необходимо значение условия цикла, полученное в первой итерации, разделить на 5:
- В конце выполнения 25-й итерации, получаем условие для 26-й итерации:
- Значит, всего в цикле присутствует 25 итераций, в каждой из которых s уменьшается на 20. Посчитаем, на сколько уменьшится значение s в общем:
- Для условия цикла - перенесем влево:
- Согласно начальным значениям, имеем:
- Запишем, как будет изменяться условие цикла в каждой итерации (в каждом шаге):
- Т.е. условие цикла будет истинным пока возможно вычитать 2. Сколько раз можно вычесть два из 45?
- Соответственно, получили 23 итерации цикла.
- Изначально n = 55. С каждой итерацией выполнялось n-1. Посчитаем n:
- Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит "работу", когда k сравняется с 200 или превысит его (k >= 200).
- Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
- Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
- Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
- Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
- Для 67:
- Данное число 67 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.
- Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
- Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n = 153.
- Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 "поместится" в 120 (153 - 33)? :
- Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо
s <= 1725
сделаемs <= 1721
(1725-1721) - Найдем d. Так как цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
- 115 - это наименьшее d при котором n станет равным 153 (за 15 шагов цикла).
- Найдем наибольшее d. Для этого надо найти такое число, которое соответствует неравенствам:
- Найдем:
- Наибольшее d=122
- В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2.
- В результате работы программы на экран выводится значение n.
- Цикл зависит от s, причем работа цикла завершится когда 2 * s2 >= 123.
- Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2 * s2 >= 123:
- Таким образом, программа выполнит 8 итераций цикла.
- Определим n, которая увеличивается каждый шаг цикла на 2, значит:
- Результатом программы является вывод значения s.
- В цикле s меняется, увеличиваясь на k, при начальном значении s = 3.
- Цикл зависит от k. Выполнение цикла завершится при k >= 25. Начальное значение k = 1.
- В цикле k постоянно увеличивается на 2 -> значит, можно найти количество итераций цикла.
- Количество итераций цикла равно:
- В s накапливается сумма арифметической прогрессии, последовательность элементов которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце необходимо будет к результату прибавить 3!
- Тогда арифметическая прогрессия будет выглядеть:
- Существует формула вычисления суммы арифметической прогрессии:
- Подставим значения в формулу:
- Не забудем, что мы к результату должны прибавить 3:
- Это и есть значение s, которое выводится в результате работы программы.
- Условие цикла зависит от переменной n, которая изменяется в цикле согласно получению степеней двойки:
- Когда переменная n принимает значение 1024 (11-й шаг цикла), условие цикла становится ложным и цикл перестает работать. На экран выводится значение s.
- Переменная s - это сумма элементов геометрической прогрессии, т.к. в ней аккумулируются значения n (числовой ряд, представляющий собой геометрическую прогрессию).
- Вспомним формулы суммы геометрической прогрессии:
- В нашем случае знаменатель q = 2, первый элемент прогрессии b1 = 1. Обратим внимание, что на последнем шаге к сумме добавляется значение 512, т.е. n = 10, а bn = 512. Только после этого n еще раз увеличивается в 2 раза и становится = 1024.
- Вычислим s по формуле, подставив необходимые значения:
- Проверим по второй формуле:
- Так как в результате на экран выводится s, то ответ 1023.
- Цикл выполняется 10 раз: от 0 до 9 (т.к. n-1).
- В цикле повторяется операция, суммирующая два подряд идущих элемента массива, - текущего и следующего:
- Данная сумма накапливается в переменной s, значение которой требуется узнать в задаче.
- Поскольку по заданию необходимо найти наибольшее значение переменной s, и по заданию элементы массива - двухзначные четные натуральные числа, то представим, что все элементы равны самому большому двухзначному четному числу - 98. Это будет оптимальным вариантом.
- В первый проход цикла получим:
- Полученная сумма будет каждый проход цикла увеличиваться на то же самое число (196):
- Так как проходов (итераций) цикла 10, то получим:
- Цикл выполняется 5 раз: от 1 до 5.
- В цикле повторяется операция произведения двух элементов массива:
- Определим, какие элементы перемножаются, подставив для n и i конкретные значения:
- Результат каждой операции умножения накапливается в переменной s, значение которой и требуется найти.
- Поскольку в s накапливается произведение элементов массива, а по заданию элементы - однозначные четные натуральные числа, то представим, что в массиве все элементы равны самому малому однозначному четному числу - 2. Это будет оптимальным вариантом, т.к. по заданию, необходимо определить наименьшее значение.
- В первый проход цикла получим:
- Полученное произведение будет каждый проход цикла перемножаться на предыдущее значение (4 - в первом шаге, 16 - во втором шаге и т.п.):
- Так как проходов цикла 5, то получим:
- Рассмотрим изменение всех переменных и элементов массива для каждой итерации (прохода) цикла:
- В задании используется цикл while - с предусловием. Такой цикл выполняется пока условие истинно.
- В условии цикла сумма каждого элемента массива с предыдущим, начиная с девятого (
j=9
), сравнивается с числом 4: если сумма элементов больше 4 то цикл выполняется. - Как только встретится сумма элементов, которая меньше либо равна четырем, цикл прекратит свою работу.
- В цикле происходит обмен значений двух элементов массива, сумма которых рассматривается в условии цикла (через переменную t). Кроме того, происходит уменьшение счетчика цикла, чтобы осуществился переход к следующему элементу массива (
j:=j-1
). - Таким образом, надо узнать сумму элементов, начиная с элементов A[9]+A[8], затем A[8]+A[7] и т.д.:
- Последнее значение счетчика j было равно 6.
- Рассмотрим алгоритм. Построим трассировочную таблицу, каждая строка которой - очередная итерация цикла.
- При последнем изменении s стало равным 75.
- В конце программы видим, что на экран выводится значение переменной m. То есть после выполнения всего алгоритма m станет равным 5. Запомним это.
- Изначально переменная N равна значению 5:
- В первом цикле формируются значения для пяти элементов массива:
- Во втором цикле видим условие, в котором каждый из пяти элементов массива будет сравниваться с m. Если элемент больше m, то в m сохранится значение этого элемента:
- Исходя из первого нашего пункта имеем, что наибольшее значение из пяти элементов массива - это значение 6. Так как в результате
m = 6
. - В цикле помимо условия находится сумматор, который суммирует
2 * Dat[k]
. В задании необходимо определить наибольшее значение S, значит, выгодно, чтобы элементы массивов имели максимальное возможное значение. - Предположим, что все пять элементов массива равны 6. Тогда m после прохождения цикла останется равной 6. То есть результат будет верным.
- Посчитаем S в цикле:
т.е. формула элементов главной диагонали:
или
Решение заданий 6 ЕГЭ по информатике для 2021
Задание демонстрационного варианта 2021 года ФИПИ
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var k,n,p,l,s,x:integer; var s, n: integer; begin readln (s); n := 1; while s <=45 do begin s := s + 4; n := n * 2 end; writeln(n) end. |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
-
✎ Способ 1 (программный):
Pascalabc.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | begin var s1 := 1; while true do // внешний цикл, бесконечный begin var s := s1; // --- код из условия задания --- // var n := 1; while s <= 45 do // внутренний цикл из задания begin s := s + 4; n := n * 2; end; // --- конец кода из условия задания --- // if n = 256 then // если найдено, то выводим соответствующее s begin print(s1); break; // выход из бесконечного цикла end; s1 := s1 + 1; // end; end. |
Пояснение:
Бейсик:
|
Python:
|
||
С++:
|
Ответ: 14
Паскаль:
1 2 3 4 5 6 7 8 9 10 | var s, n: integer; begin readln (s); n := 3; while s <= 51 do begin s := s + 7; n := n * 2 end; writeln(n) end. |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
-
✎ Способ 1 (программный):
Pascalabc.net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | begin var s1 := 50; while true do // внешний цикл, бесконечный begin var s := s1; // --- код из условия задания --- // var n := 3; while s <= 51 do // внутренний цикл из задания begin s := s + 7; n := n * 2; end; // --- конец кода из условия задания --- // if n = 96 then // если найдено, то выводим соответствующее s begin print(s1); break; // выход из бесконечного цикла end; s1 := s1 - 1; // end; end. |
Пояснение:
Бейсик:
|
Python:
|
||
С++:
|
Ответ: 23
Решения подобных заданий прошлых лет
Алгоритмы с циклами:
Определить, какое число пропущено
Сопоставьте формулу:
и программу, предназначенную для расчета по данной формуле. Программа написана правильно, а в формуле допущена ошибка.
Определите, где и какое число в формуле пропущено?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var k,n,p,l,s,x:integer; begin writeln('введите n='); readln(n); writeln('введите x='); readln(x); s:=0; p:=1; l:=x; For k:=1 to n do begin p:=p * k; s:=s + 3*l/p; l:=l*x; end; writeln('S=',S:5:2); end. |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
Фактически она обозначает: сумма xk/ k!
для всех k, начиная от 1 до n.
For k:=1 to n do
p:=p * k;
l:=l*x;
s:=s + 3*l/p;
Ответ: 3
Простые задания с двумя линейными непересекающимися функциями
Определите, что будет напечатано в результате работы следующего фрагмента программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var k,s:integer; begin s:=512; k:=0; while s < 2048 do begin s:=s + 64; k:=k + 1; end; write(k); end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
s:=0; k:=0; while s < 1536 do begin ...
1536 / 64 = 24
Результат: 24
Для более детального разбора предлагаем посмотреть видео решения данного 6 задания ЕГЭ по информатике:
Определите, что будет напечатано в результате выполнения программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var s, i: integer; begin i := 1; s := 105; while s > 5 do begin s := s - 2; i := i + 1 end; writeln(i) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
... s := 100; while s > 0 do begin ...
Результат: 51
Запишите число, которое будет напечатано в результате выполнения следующей программы.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var s, n: integer; begin s := 260; n := 0; while s > 0 do begin s := s - 15; n := n + 2 end; writeln(n) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
- Рассмотрим алгоритм:
260 / 15 ~ 17,333...
17 + 1 = 18 итераций цикла Проверим: 17 * 15 = 255 (< 260) 18 * 15 = 270 (> 260)
n = 18 * 2 = 36
Результат: 36
Подробное решение данного 6 (8) задания из демоверсии ЕГЭ 2018 года смотрите на видео:
Определите, что будет напечатано в результате выполнения следующего фрагмента программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var k,s: integer; begin k:=1024; s:=50; while s > 30 do begin s:= s - 4; k:= k div 2; end; write(k) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
Результат: 32
Подробное решение смотрите на видео:
Определите значение переменной c после выполнения следующего фрагмента программы. Ответ запишите в виде целого числа.
Паскаль:
1 2 3 4 5 6 7 | a:=-5; c:=1024; while a<>0 do begin c:=c div 2; a:=a + 1 end; |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
Результат: 32
Смотрите видеоразбор задания:
Определите, что будет напечатано в результате работы следующего фрагмента программы.
Паскаль:
1 2 3 4 5 6 7 8 9 10 | var n, s: integer; begin n := 1; s := 0; while s <= 365 do begin s := s + 36; n := n * 2 end; write(n) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
Результат: 2048
Сумма или разность двух линейных функций (while s - n или while s + n)
Запишите число, которое будет напечатано в результате выполнения следующей программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var s, n: integer; begin s := 522; n := 400; while s - n > 0 do begin s := s - 20; n := n - 15 end; write(s) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
№ шага | условие цикла | s | n |
---|---|---|---|
1 | 522-400=122 122 > 0 |
522-20=502 | 400-15=385 |
2 | 502-385=117 117 > 0 |
502-20=482 | 385-15=370 |
3 | 482-370=112 112 > 0 |
... | ... |
122 - 117 = 5 117 - 112 = 5 ...
122 / 5 = 24,4 24 * 5 = 120 (120 + 2 = 122)
Это значит, что на 24-й итерации цикла переменные s и n получили такие значения, после которых условие еще осталось истинным: 2 > 0. На 25-м шаге выполняется это условие:
№ шага | условие цикла | s | n |
---|---|---|---|
25 | 2 > 0 | s-20=... | n-15=... |
25 * 5 = 125 (125 - 3 = 122)
№ шага | условие цикла | s | n |
---|---|---|---|
25 | 2 > 0 | s-20=... | n-15=... |
26 | 3 < 0 | не выполняется | не выполняется |
25 * 20 = 500 (за 25 итераций)
522 - 500 = 22 (вычитаем из исходных данных)
Результат: 22
Предлагаем посмотреть видео решения задания:
Запишите число, которое будет выведено в результате работы программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 | var s, n: integer; begin s := 10; n := 55; while n > s do begin s := s + 1; n := n - 1 end; writeln(n) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
n - s > 0
55 - 10 = 45
n - 1 > s + 1 => n - s - 2 > 0
для 22 итераций: 2 * 22 = 44 в условии цикла имеем 45 > 44, т.е. условие еще истинно для 23 итераций: 2 * 23 = 46 в условии цикла имеем 45 > 46 - условие ложно, т.е. цикл прекращает работу
n = 55 - 23 = 32
Результат: 32
Поиск наименьшего/наибольшего целого введенного числа d
При каком наименьшем целом введенном числе d после выполнения программы будет напечатано число 192?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 | var k,s,d: integer; begin readln (d); s:=0; k:=0; while k < 200 do begin s:=s + 64; k:=k + d; end; write(s); end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
64 * x = 192 число повторов: x = 192 / 64 = 3
3 * d = 200 d = 200/3 ~ 66,66
66 + 66 + 66 = 198 (< 200)
т.е. цикл после трех прохождений еще продолжит работу, что нам не подходит.
67 + 67 + 67 = 201 (>200)
Результат: 67
Разбор задания смотрите на видео:
Запишите через запятую наименьшее и наибольшее значение числа d, которое нужно ввести, чтобы после выполнения программы было напечатано 153?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var n, s, d: integer; begin readln(d); n := 33; s := 4; while s <= 1725 do begin s := s + d; n := n + 8 end; write(n) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
120 / 8 = 15 раз (количество итераций цикла)
... s := 0; while s <= 1721 do begin ...
1721 / 15 = 114,733 - не целое, не подходит 1722 / 15 = 114,8 - не целое, не подходит ... берем кратное 5: 1725 / 15 = 115 - целое, подходит!
14 * d <= 1721 при этом: 15 * d > 1721
14 * 122 = 1708 (<=1721) 15 * 122 = 1830 (>1721)
Результат: 115, 122
Смотрите видео данного 6 задания ЕГЭ:
Усложненные задания с двумя линейными функциями
Запишите число, которое будет напечатано в результате выполнения следующей программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 | var s, n: integer; begin s := 0; n := 0; while 2*s*s < 123 do begin s := s + 1; n := n + 2 end; writeln(n) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
1 шаг: s = 2*12=2 2 шаг: s = 2*22=8 3 шаг: s = 2*32=18 ... 7 шаг: s = 2*72=98 (меньше 123, т.е. цикл еще работает) 8 шаг: s = 2*82=128 (больше 123, цикл не работает! )
Либо просто нужно было бы найти такое наименьшее возможное четное число >= 123, которое при делении на 2 возвращало бы вычисляемый корень числа:
s=124/2 = √62 - не подходит! s=126/2 = √63 - не подходит! s=128/2 = √64 = 8 - подходит!
n = 2 * 8 = 16
Результат: 16
Видео данного задания ЕГЭ доступно здесь:
Арифметическая и геометрическая прогрессия
Определите, что будет напечатано в результате работы следующего фрагмента программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 | var k, s: integer; begin s:=3; k:=1; while k < 25 do begin s:=s + k; k:=k + 2; end; write(s); end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
n = 25 / 2 ~ 12
(т.к. k изначально равнялось 1, то в последнее, 12-е прохождение цикла, k = 25; условие цикла ложно)
s:=0; k:=1; while k < 25 do begin ...
1 + 3 + 5 + 7 ... количество членов прогрессии - 12, т.к. 12 итераций цикла
где a1 - первый член прогрессии,
d - разность,
n - количество членов прогрессии (в нашем случае - кол-во итераций цикла)
(2 * 1 + 2 * 11) / 2 * 12 = 144
144+3 = 147
Результат: 147
Решение данного задания ЕГЭ по информатике видео:
Запишите число, которое будет напечатано в результате выполнения программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | var n, s: integer; begin n := 1; s := 0; while n <= 1000 do begin s := s + n; n := n * 2 end; write(s) end. |
Бейсик:
|
Python:
|
С++:
|
✍ Решение:
Рассмотрим алгоритм:
1 2 4 8 16 32 64 128 256 512 1024
1.
\[ S_{n} = \frac {b_1-b_{n}*q}{1-q} \]
2.
\[ S_{n} = b_{1} * \frac {1-q^n}{1-q} \]
\[ S_{n} = \frac {1-512*2}{1-2} =1023 \]
\[ S_{n} = 1 * \frac {1-2^{10}}{1-2}=1023 \]
Результат: 1023
Алгоритмы с массивами:
Наибольшее или наименьшее значение переменной s (сумматор)
В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов массива A[i] приведены в таблице.
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
A[i] | 14 | 13 | 15 | 8 | 4 | 12 | 30 | 21 | 22 | 16 | 5 | 9 |
Определите значение переменной s после выполнения следующего фрагмента этой программы
s := 0; n := 1; for i := 0 to 11 do if A[i] > A[n] then s := s + A[i] + i else A[n] := A[i]; |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
Ответ: 202
Видео подробного решения:
В программе описан одномерный целочисленный массив А с индексами от 0 до 10.
s:=0; n:=10; for i:=0 to n-1 do begin s:= s + A[i] + A[i+1] end; |
В начале выполнения этого фрагмента в массиве находились двухзначные четные натуральные числа.
Какое наибольшее значение может иметь переменная s после выполнения данной программы?
✍ Решение:
A[i] + A[i+1]
s = 0 + 98 + 98 = 196
s = 196 + 98 + 98
196 * 10 = 1960
Результат: 1960
Детальный разбор задания 6 ЕГЭ по информатике предлагаем посмотреть в видеоуроке:
В программе описан одномерный целочисленный массив А с индексами от 0 до 10.
s:=1; n:=10; for i:=1 to 5 do begin s:= s * A[i] * A[n-i+1] end; |
В начале выполнения этого фрагмента в массиве находились однозначные четные натуральные числа.
Какое наименьшее значение может иметь переменная s после выполнения данной программы?
✍ Решение:
A[i] * A[n-i+1]
1 шаг: A[1]*A[10] 2 шаг: A[2]*A[9] 3 шаг: A[3]*A[8] 4 шаг: A[4]*A[7] 5 шаг: A[5]*A[6]
s = 1 * 2 * 2 = 4
s = 4 * 2 * 2 = 16 ...
45 = 1024
Результат: 1024
Если что-то осталось непонятным, предлагаем посмотреть разбор задания 6 ЕГЭ по информатике в видеоуроке:
Перестановка в массиве. Определить значение переменной
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 3, 0, 4, 6, 5, 1, 8, 2, 9, 7 соответственно, т.е. A[0] = 3, A[1] = 0 и т.д.
Определите значение переменной c после выполнения следующего фрагмента этой программы:
1 2 3 4 5 6 7 8 9 | c := 0; for i := 1 to 9 do if A[i-1] > A[i] then begin c := c + 1; t := A[i]; A[i] := A[i-1]; A[i-1] := t; end; |
✍ Решение:
Подробное решение 19 задания демоверсии ЕГЭ 2018 года смотрите на видео:
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 3, 4, 7, 2, 9, 1, 2, 3, 0 соответственно, т.е. A[0] = 1, A[1] = 3 и т.д.
Определите значение переменной c после выполнения следующего фрагмента этой программы:
1 2 3 4 5 6 7 8 9 | c := 0; for i := 1 to 9 do if A[i] > A[0] then begin c := c + 1; t := A[i]; A[i] := A[0]; A[0] := 2*t; end; |
✍ Решение:
№ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
if | 3>4 true |
4>6 false |
7>6 true |
2>14 false |
9>14 false |
1>14 false |
2>14 false |
3>14 false |
0>14 false |
c | 1 | - | 2 | - | - | - | - | - | - |
t | 3 | - | 7 | - | - | - | - | - | - |
A[i] | 1 | 6 | |||||||
A[0] | 6 | - | 14 | - | - | - | - | - | - |
Результат: 2
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 0, 7, 1, 3, 2, 1, 8, 9, 6, 3 соответственно, т.е. A[0] = 0, A[1] = 7 и т.д.
Определите значение переменной j после выполнения следующего фрагмента этой программы:
1 2 3 4 5 6 7 8 | j:=9; while A[j] + A[j-1] > 4 do begin t:=A[j]; A[j]:=A[j-1]; A[j-1]:=t; j:=j-1; end; |
✍ Решение:
Для первой итерации цикла имеем: while A[9] + A[8] > 4 do ...
A[9]+A[8] = 3+6 > 4 - да, значит обмен: A[9]=6 A[8]=3, j=8
A[8]+A[7] = 3+9 > 4 - да, значит обмен: A[8]=9 A[7]=3, j=7
A[7]+A[6] = 3+8 > 4 - да, значит обмен: A[7]=8 A[6]=3, j=6
A[6]+A[5] = 3+1 > 4 - нет, цикл прекращает свою работу
Результат: 6
В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов равны 20, 19, 33, 21, 42, 13, 12, 24, 4, 22, 6, 10, т.е. A[0]=20, A[1]=19 и т.д.
Определите значение переменной s после выполнения следующего фрагмента этой программы:
1 2 3 4 5 6 7 8 9 | n := 1; s := 1; for i := 1 to 11 do if A[i] < A[n] then begin s := s * i; t := A[i]; A[i] := A[n]; A[n] := t; end; |
✍ Решение:
Результат: 240
Смотрите подробный разбор на видео:
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 21, 16, 7, 12, 18, 3, 8, 13, 11, 17, т.е. A[0]=21, A[1]=16 и т.д.
Определите значение переменной s после выполнения следующего фрагмента этой программы:
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 | s := 0; n := 4; for i:=0 to 9 do if A[i] <= A[n] then begin s := s + A[i]; t := A[i]; A[i] := A[n]; A[n] := t; n := i mod 3; end; writeln(s); |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
i | <= ? | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | s | n |
21 | 16 | 7 | 12 | 18 | 3 | 8 | 13 | 11 | 17 | 0 | 4 | ||
0 | 21<=18 нет |
21 | 18 | ||||||||||
1 | 16<=18 да |
16 18 |
18 16 |
16 | 1 mod 3 = 1 | ||||||||
2 | 7<=18 да |
18 7 |
7 18 |
16+7=23 | 2 mod 3 = 2 | ||||||||
3 | 12<=18 да |
18 12 |
12 18 |
23+12=35 | 3 mod 3 = 0 | ||||||||
4 | 16<=21 да |
21 16 |
16 21 |
35+16=51 | 4 mod 3 = 1 | ||||||||
5 | 3<=7 да |
7 3 |
3 7 |
51+3=54 | 5 mod 3 = 2 | ||||||||
6 | 8<=12 да |
12 8 |
8 12 |
54+8=62 | 6 mod 3 = 0 | ||||||||
7 | 13<=16 да |
16 13 |
13 16 |
62+13=75 | 7 mod 3 = 1 | ||||||||
8 | нет | 3 | 11 | ||||||||||
9 | нет | 13 | 17 |
Ответ: 75
В результате выполнения программы напечатано число 6.
Какое наибольшее значение может иметь переменная S после выполнения программы?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var k, m, S, N: integer; Dat: array[1..100] of integer; begin N:= 5; m := 0; S := 0; for k := 1 to N do readln(Dat[k]); for k := 1 to N do begin S := S + 2 * Dat[k]; if Dat[k]>m then begin m := Dat[k] end end; writeln(m) end. |
Бейсик:
|
Python:
|
||
С++:
|
✍ Решение:
-
Рассмотрим алгоритм.
N:= 5; |
for k := 1 to N do readln(Dat[k]); |
if Dat[k]>m then begin m := Dat[k] end |
S := 0 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 = 12 * 5 = 60
Ответ: 60
Смотрите видеоразбор задания:
Alex
Спасибо за видео! Пригодилось)
admin
очень приятно:)
Данил
В задании 8.3 ответ письменно 67, на видео 201, кто ошибся?
admin
да, спасибо! это на видео ошибка, там уже исправлено
Nikolay
Очень хорошие объяснения. Спасибо!
Irina
Разве в 8_13 ответ не 33?
admin
нет, ответ 32
Виталий
Здравствуйте,
Пара опечаток:
1) В первом свойстве геометрической прогресси должно быть b_n^2 = b_{n-1}b_{n+1} (случайно вместо b написали q)
2) Строка «Формула для вычисления знаменателя …» присутствует дважды
Математическая ошибка:
Сумма геометрической прогрессии не верна при q = 1. Или в ЕГЭ такого не бывает? Я не всегда понимаю, когда материал содержит ошибку, а когда это мм «особенность» ЕГЭ…
admin
Спасибо!)
Султан
В задании 8_12 на C++ в цикле while откуда-то взялся a, хотя должен быть s.
admin
Спасибо! Исправлено!