старое Информатика ЕГЭ 17 задание разбор

17-е задание: «Логические выражения и запросы для поисковых систем»
Уровень сложности — повышенный,
Максимальный балл — 1,
Примерное время выполнения — 2 минуты.
Задание 17 ЕГЭ по информатике 2017 ФИПИ вариант 1 (Крылов С.С., Чуркина Т.Е. «Типовые экзаменационные варианты»):

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» — символ «&».

 
В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:

Запрос Найдено страниц (в тысячах)
Пьер & Наука 180
Пьер & (Наука | Кюри) 410
Пьер & Кюри 320

Какое количество страниц (в тысячах) будет найдено по запросу:

Пьер & Наука & Кюри

Ответ: 90

Показать решение:

  • Везде присутствует сомножитель «Пьер &» (и в искомом запросе!), сократим его:
  • Запрос Найдено страниц (в тысячах)
    Наука 180
    Наука | Кюри 410
    Кюри 320

    Искомый запрос: Наука & Кюри

  • Используем круги Эйлера для решения, обозначив цифрами каждую составляющую:
  • круги эйлера для решения егэ по информатике

  • Из схемы и исходных данных получим:
  • 1. №1 + №2 = 180 (Наука)
    2. №2 + №3 = 320 (Кюри)
    3. №1 + №2 + №3 = 410 (Наука | Кюри)
    
  • Сделаем подстановку в п.3 из п.1 и получим:
  • №1 + №2 + №3 = 180 + №3 = 410
    №3 = 410 - 180 = 230
    
  • Сделаем подстановку в п.2:
  • №2 + №3 = №2 + 230 = 320
    №2 = 320 - 230 = 90

📹 Видео


17 задание. Демоверсия ЕГЭ 2018 информатика:

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» – символ «&».


 
В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:

Запрос Найдено страниц (в сотнях тысяч)
Бабочка 22
Гусеница 40
Трактор 24
Трактор | Бабочка | Гусеница 66
Трактор & Гусеница 12
Трактор & Бабочка 0

Какое количество страниц (в сотнях тысяч) будет найдено по запросу

Бабочка & Гусеница?

Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

Подобные задания для тренировки

Ответ: 8

Показать решение:

  • Поскольку запрос Трактор & Бабочка возвращает значение 0, это значит, что в схеме кругов Эйлера-Вена два данных сектора пересекаться НЕ будут! Учитывая данный факт, отобразим круги Эйлера для решения, обозначив цифрами каждую составляющую:
  • решение 17 задания егэ

  • Получим значения отдельных секторов схемы, исходя из условий задачи:
  • 1. №4 + №5 = 22
    2. №2 + №3 + №4 = 40
    3. №1 + №2 = 24
    4. №1 + №2 + №3 + №4 + №5 = 66
    5. №2 = 12
    

    Искомый запрос: №4 = ?

  • №4 можно было бы выразить из п.1, если бы мы знали значение №5:
  • №4 + №5 = 22  ->
    №4 = 22 - №5
    
  • №5 можно было бы найти из п.4, если бы мы знали значение №1:
  • №1 + №2 + №3 + №4 + №5 = 66  ->
    №5 = 66 - №1 - (№2 + №3 + №4)
    из пунктов 4 и 2:
    №5 = 66 - №1 - 40 
    
  • Вычислим значение №1 из п.2 и п.5:
  • №2 = 12
    №1 + №2 = 24  ->
    №1 = 24 - 12 = 12
    
  • Теперь можно найти №5:
  • №5 = 66 - №1 - 40  ->
    №5 = 66 - 12 - 40 = 14
    
  • Найдем №4:
  • №4 = 22 - №5  ->
    №4 = 22 - 14 = 8
    

📹 Видео


Информатика ЕГЭ 14 задание разбор

14-е задание: «Операции в системах счисления»
Уровень сложности — повышенный,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 5 минут.
  
Проверяемые элементы содержания: Знание позиционных систем счисления
До ЕГЭ 2021 года — это было задание № 16 ЕГЭ

Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ


Сколько цифр и сумма цифр

14_12: Разбор задания 14 ЕГЭ по информатике (с сайта К. Полякова (с ссылкой на Е. Джобса), вариант 254):

Значение арифметического выражения

43∙7103 – 21∙757 + 98

записали в системе счисления с основанием 7.
Найдите сумму цифр получившегося числа и запишите её в ответе в десятичной системе счисления.

Ответ: 276

Показать решение:

✎ Решение с использованием программирования:

PascalABC.net:

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var x,s: Biginteger;
  x := 43*Biginteger.Pow(7, 103) - 21*Biginteger.Pow(7, 57) + 98;
  // в получившемся числе рассматриваем каждую цифру в 7-й системе сч.
  s:=0;
  while x > 0 do
  begin
    s:=s+ x mod 7; // добавляем цифру правого разряда
    x := x div 7; // убираем разряд числа в 7-й системе сч.
  end;
  println(s);
end.
Python:

1
2
3
4
5
6
7
x = 43*7**103 - 21*7**57 + 98
s = 0
# в получившемся числе рассматриваем каждую цифру в 7-й системе сч.
while x: 
    s+= x % 7 # добавляем цифру к сумматору
    x //= 7 # убираем разряд числа в 7-й системе сч.
print( s )
С++:

1
 

Задание 14 (16) ЕГЭ по информатике 2017 ФИПИ вариант 3 (Крылов С.С., Чуркина Т.Е.):

Значение арифметического выражения:
21024 + 464 — 64
записали в системе счисления с основанием 2.

Сколько цифр «1» содержится в этой записи?
  
Типовые задания для тренировки
Типовые задания для тренировки

Ответ: 123

Показать решение:

✎ Решение с использованием программирования:

PascalABC.net:

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var k := 0;
  var x: Biginteger;
  x := Biginteger.Pow(2, 1024) + Biginteger.Pow(4, 64) - 64;
  // в получившемся числе рассматриваем каждую цифру в 2-й системе сч.
  while x > 0 do
  begin
    if x mod 2 = 1 then k += 1; // если цифра = 1, то считаем ее
    x := x div 2; // убираем разряд числа в 2-й системе сч.
  end;
  println(k);
end.
Python:

1
2
3
4
5
6
7
8
x = 2**1024 + 4**64 - 64
k = 0
# в получившемся числе рассматриваем каждую цифру в 2-й системе сч.
while x: 
    if x % 2 == 1: # если цифра = 1, то считаем ее
        k += 1
    x //= 2 # убираем разряд числа в 2-й системе сч.
print( k )
С++:

1
 

✎ Решение теоретическое:

  • Существует правило:
  • 2N = 10..02(1 единица и N нулей)
  • Чтобы воспользоваться этим правилом, преобразуем общее выражение к степеням двойки:
  • 21024 + (22)64 - 26 = 21024 + 2128 - 26
  • При переводе в двоичную систему получим:
  • 10...0 (1024 нуля) + 10...0 (128 нулей) - 10...0 (6 нулей)
  • Обратим внимание, что разница между числами большая. Т.е. при выполнении сложения в столбик, единицы в одном и том же разряде быть не могут. Так:
  •  10....00000  - 1024 нуля
    +
           10..0  - 128 нулей
    _________________________
     10....10..0  
    
  • Из первого слагаемого 10…0 (1024 нуля) запомним одну единицу в старшем бите, остальные нули нас не интересуют, так как далее мы воспользуемся другим правилом — для разницы:
  •  10....00000  - 1024 нуля
    +
           10..0  - 128 нулей
    _________________________
     10....10..0  - запомним единицу
    
  • Существует также правило:
  • 2N — 2K = 1…1 (N - K единиц)0…0(K нулей)
  • По формуле выполним вычитание 2128 — 26: получим 1..1 (122 единицы) 0..0(6 нулей):
  •  10..0000000  - 128 нулей
    -
         1000000  
    _________________________
     11..1000000  - 122 единицы и 6 нулей
    
  • Прибавим к 122 получившимся единицам еще одну из первого слагаемого (10…0 (1024 нуля)) и получим:
  • 122 + 1 = 123 единицы

📹 Видео


14 (16) задание. Демоверсия ЕГЭ 2018 информатика:

Значение арифметического выражения:
4910 + 730 – 49
записали в системе счисления с основанием 7.

Сколько цифр «6» содержится в этой записи?

Типовые задания для тренировки

Ответ: 18

Показать решение:

✎ Решение с использованием программирования:

PascalABC.net:

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var x: Biginteger;
  x := Biginteger.Pow(49, 10) + Biginteger.Pow(7, 30) - 49;
  // в получившемся числе рассматриваем каждую цифру в 7-й системе сч.
  var k:=0;
  while x > 0 do
  begin
    if x mod 7 = 6 then k+=1; // если цифра = 6, то считаем ее
    x := x div 7; // убираем разряд числа в 7-й системе сч.
  end;
  println(k);
end.
Python:

1
2
3
4
5
6
7
8
x = 49**10 + 7**30 - 49
k = 0
# в получившемся числе рассматриваем каждую цифру в 7-й системе сч.
while x: 
    if x % 7 == 6: # если цифра = 6, то считаем ее
        k += 1
    x //= 7 # убираем разряд числа в 7-й системе сч.
print( k )
С++:

1
 

✎ Решение теоретическое:

  • Приведем все числа к степеням 7:
  • 720 + 730 - 72
  • Расставим операнды выражения в порядке убывания степеней:
  • 730 + 720 - 72
  • Вспомним две формулы для работы со системами счисления:
  • 1.
    an = 10..0a
           n
    2.
    an - am = (a-1)..(a-1)0..0a
                  n-m       m
    
  • Переведем первое число согласно формуле 1:
  • 730 = 10..0
            30
    
  • В данном числе нет цифры 6, как и в остальных числах.
  • Цифра 6 появляется при выполнении вычитания.
  • Подсчитаем все «6», используя формулу 2:
  • 0 + (20 - 2) = 18
    
  • Получаем шестерок: 18

Результат: 18

📹 Видео


Задание 14 (16) ЕГЭ по информатике 2017 ФИПИ вариант 5 (Крылов С.С., Чуркина Т.Е.):

Значение арифметического выражения:
4500 + 3*42500 + 16500 — 1024
записали в системе счисления с основанием 4.

Сколько цифр «3» содержится в этой записи?

Типовые задания для тренировки

Ответ: 496

Показать решение:

✎ Решение с использованием программирования:

PascalABC.net:

1
 
Python:

1
2
3
4
5
6
7
8
x = 4**500 + 3*4**2500 + 16**500 - 1024
k = 0
# в получившемся числе рассматриваем каждую цифру в 4-й системе сч.
while x: 
    if x % 4 == 3: # если цифра = 3, то считаем ее
        k += 1
    x //= 4 # убираем разряд числа в 4-й системе сч.
print( k )
С++:

1
 

Результат: 496

📹 Видео


Разбор 14 (16) задания ЕГЭ по информатике, вариант 2 (ФИПИ, «ЕГЭ информатика и ИКТ, типовые экзаменационные варианты 2018», 10 вариантов, С.С. Крылов, Т.Е. Чуркина):

Значение арифметического выражения: 81024 + 832 – 65 – записали в системе счисления с основанием 8. Сколько цифр «7» содержится в этой записи?

Типовые задания для тренировки

Ответ: 31

Показать решение:

✎ Решение с использованием программирования:

PascalABC.net:

1
 
Python:

1
2
3
4
5
6
7
8
x = 8**1024 + 8**32 - 65
k = 0
# в получившемся числе рассматриваем каждую цифру в 8-й системе сч.
while x: 
    if x % 8 == 7: # если цифра = 7, то считаем ее
        k += 1
    x //= 8 # убираем разряд числа в 8-й системе сч.
print( k )
С++:

1
 

✎ Решение теоретическое:

  • Приведем все числа к степеням восьмерки:
  • 65 = 64 + 1 = 82 + 80;
  • Получаем:
  • 81024 + 832 - (82 + 80);
    81024 + 832 - 82 - 80
    
  • Вспомним две формулы для работы с системами счисления:
  • 1.
    an = 10..0a
           n
    2.
    an - am = (a-1)..(a-1)0..0a
                  n-m       m
    
  • Переведем первое число согласно формуле 1:
  • 81024 = 10..0
            1024
    
  • В данном числе нет цифры 7, как и в остальных числах.
  • Цифра 7 появляется при выполнении вычитания. У нас два таких действия, идущих подряд. Это неудобно. Необходимо, чтобы действия чередовались (a + b — c + d — e…)
  • Вспомним еще одну формулу:
  • 3.
    
    -2n = -2n+1 + 2n
    ! Формула предназначена для чисел в двоичной системе счисления, но для подсчета цифр "7" в 8-й (или "6" в 7-й и т.п.) ее можно использовать (для поиска единиц или нулей она не подходит!!!)
  • В нашем случае заменим часть выражения:
  • -82 = -83 + 82
    ! обратите внимание, что тождество неверно, но
    при поиске количества "7" этой формулой можно воспользоваться
    (для поиска единиц или нулей она не подходит!)
    
    
    Получаем:
    
    81024 + 832 - 83 + 82- 80
    
  • Получили чередование операций «+» и «-«.
  • Теперь посчитаем все «7», используя формулу 2:
  • 0 + (32 - 3) + (2 - 0) = 31
    
  • Получаем семерок: 31

14_13: Разбор 14 задания ЕГЭ по информатике (с сайта К. Полякова # 113):

Сколько значащих нулей в двоичной записи числа 4350 + 8340 – 2320 – 12?

Ответ: 324

Показать решение:

    ✎ Решение с использованием программирования:

    PascalABC.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    begin
      var b2 := biginteger(2);
      var numb := (2 * b2) ** 350 + (4 * b2) ** 340 - (1 * b2) ** 320 - 12;
      var digit: biginteger;
      var n := 0;
      while numb > 0 do
      begin
        digit := numb mod 2;
        if digit = 0 then n += 1;
        numb := numb div 2
      end;
      print(n)
     end.
    Python:

    1
    2
    3
    4
    5
    6
    7
    
    x = 4**350 + 8**340 - 2**320 - 12
    print(x)
    k = 0
    while x:
      if x % 2 == 0: k += 1
      x //= 2
         print( k )
    С++:

     

✎ Решение теоретическое:
4350 + 8340 – 2320 – 12

  • По возможности приведем каждое слагаемое к степеням 2. Получим:
  • (22)350 + (23)340 - 2320 - 3*22 =
    (22)350 + (23)340 - 2320 - 12 =
    2700 + 21020 - 2320 - (23 + 22)
    
  • Далее рассуждаем так: количество нулей можно найти, если из общего количества цифр в результирующем числе вычесть количество не нулей (любых других цифр).
  • Расположим операнды по убыванию:
  • 21020 + 2700 - 2320 - 23 - 22
  • Наибольшее число 21020, в нем 1021 разряд в двоичной с.с. (одна единица и 1020 нулей). То есть всего 1021 знаков.
  • Для того, чтобы избежать два подряд идущих минуса, воспользуемся правилом -2n = -2n+1+2n и преобразуем выражение:
  • 21020 + 2700 - 2321+ 2320- 24 + 23 - 22
  • Посчитаем количество не нулей в каждом операнде:
  • 21020 -> один не ноль
    2700 - 2321 -> 379 не нулей
    2320- 24 -> 316 не нулей 
    23 - 22 -> один не ноль
    Итого: 1+ 379+316 +1 = 697
  • Получаем нулей:
  • 1021 - 697 = 324

    Результат: 324


    Найти основание системы счисления и уравнения

    14_7: Разбор задания 14 ЕГЭ по информатике (с сайта К. Полякова, вариант 36):

    Укажите, сколько всего раз встречается цифра 2 в записи чисел 13, 14, 15, …, 23 в системе счисления с основанием 3.

    Типовые задания для тренировки

    Ответ: 13

    Показать решение:

    • Для начала достаточно перевести первое и последнее число предложенного интервала в троичную систему счисления. Сделаем это:
    • 1.
       13 | 3 
       12   4 | 3 
        1   3   1   
            1
      1310 = 1113
      
      2.
      23 | 3 
      21   7 | 3 
      2    6   2
           1
      2310 = 2123
      
    • Теперь добавим промежуточные числа в троичной системе счисления (прибавляя единицу к каждому очередному полученному числу), не забывая, что в троичной системе всего три цифры (0, 1 и 2):
    • 111, 112, 120, 121, 122, 200, 201, 202, 210, 211, 212
    • На всякий случай стоит посчитать количество полученных чисел и сравнить их с количеством чисел в исходной последовательности.
    • Теперь осталось посчитать количество цифр 2 в полученной последовательности. Их 13:
    • 111, 112, 120, 121, 122, 200, 201, 202, 210, 211, 212

    Разбор 14 (16) задания ЕГЭ по информатике 2019 г. «10 тренировочных вариантов для подготовки к ЕГЭ» Д.М. Ушаков:

    Решите уравнение:

    204N+1 = 204N + 2616

    В ответе укажите значение переменной N.

    Типовые задания для тренировки

    Ответ: 9

    Показать решение:

    • Разделим уравнение на три части и вычислим каждую часть отдельно (выделим части разным цветом):
    • 204N+1 = 204N + 2616
       1       2     3 
      
    • Используем формулу разложения числа по степеням основания:
    • 1. 
      210
      204N+1
      
      По формуле получаем:
      2*(N+1)2 + 0*(N+1)1 + 4*(N+1)0 =
      = 2*(N2 + 2N + 1) + 0 + 4 = 2N2 + 4N + 6
      
    • Выполним то же самое для остальных двух частей:
    • 2.
      210
      204N
      
      По формуле получаем:
      2*N2 + 0*N1 + 4*N0 =
      = 2N2 + 4
      
      3.
      2616 = 3810
      
    • Подставим результаты всех частей в уравнение:
    • 2N2 + 4N + 6 = 2N2 + 4 + 38;
      4N = 36;
      N = 9
      

    14_8: Разбор задания 14 ЕГЭ по информатике (с сайта К. Полякова, вариант 38):

    Найдите основание системы счисления, в которой выполнено сложение:

    144 + 24 = 201

    Типовые задания для тренировки

    Ответ: 7

    Показать решение:

    • Вместо обозначения искомой системы счисления введем неизвестное x:
    • 144x + 24x = 201x
    • Запишем формулу перевода в десятичную систему счисления каждого из слагаемых и сумму исходного равенства:
    • 144 + 24 = 201
      1*x2 + 4*x1 + 4*x0 + 2*x1 + 4*x0 = 2*x2 + 0*x1 + 1*x0
      
    • Упростим полученное уравнение:
    • x2 - 6x - 7 = 0
    • Решим уравнение:
    • D = b2 - 4ac = 36 - 4*1*(-7) = 64
      x = (-b ± √D)/2a
      x1 = (6 + 8)/2 = 7
      x2 = (6 - 8)/2 - не подходит
      x = 7
      

    14_9: Разбор задания 14 (16) ЕГЭ по информатике (с сайта К. Полякова, вариант 75):

    В некоторой системе счисления записи десятичных чисел 68 и 94 заканчиваются на 3. Определите основание системы счисления.

    Типовые задания для тренировки

    Ответ: 13

    Показать решение:

    • Вспомним правило:
    • Последняя цифра записи числа в системе счисления с основанием X — это остаток от деления этого числа на X
    • Примем искомую систему счисления за x. Тогда, исходя из приведенного правила имеем:
    • 94 / x = некоторое число и остаток 3
      и
      68 / x = некоторое число и остаток 3
      
    • Поскольку x должно быть целым числом, то следующее деление должно выполняться без остатка:
    • 91/x 
      65/x
    • Иными словами x — наибольший общий делитель чисел 91 и 65.
    • Найдем НОД, например, по алгоритму Евклида:
    • 91 - 65 = 26
      65 - 26 = 39
      39 - 26 = 13
      26 - 13 = 13 
      
    • Получаем результат 13.

    14_10: Разбор задания 14 ЕГЭ по информатике (с сайта К. Полякова, вариант 137):

    Некоторое число X из десятичной системы счисления перевели в системы счисления с основаниями 16, 8. Часть символов при записи утеряна. Позиции утерянных символов обозначены *:

    X = *516 = *0*8

    Сколько чисел соответствуют условию задачи?

    Типовые задания для тренировки

    Ответ: 3

    Показать решение:

    • Данные числа с утерянными символами переведем из 16-й и из 8-й системы счисления в двоичную. Перевод будем делать триадами и тетрадами, неизвестные позиции оставим пустыми:
    • 1. *516
          *   |    5  16
      
      * * * * | 0 1 0 1 2
      
      2. *0*8
        *  |  0  |  *  8
      * * *|0 0 0|* * * 2
      
    • Сопоставим известные и неизвестные биты в обеих получившихся масках:
    • * * 0 0 0 1 0 1
    • Неизвестными остались 7-й и 8-й бит. Они не могут быть одновременно нулями, так как для *0*8 тогда исчезнет старший разряд. Поэтому оставшиеся варианты будут такими:
    • 1. 01000101
      2. 10000101
      3. 11000101
    • Итого 3 варианта.

    Задание 14_4:

    Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 75 оканчивается на 13.

    Типовые задания для тренировки

    Ответ: 8,72

    Показать решение:

    • Так как 75 должно оканчиваться на 13, то имеем два общих случая:
    • 1. 7510 = 13N 
      2. 7510 = ...13N (число оканчивается на 13)
      
    • Рассмотрим подробно каждый случай.
    • 1 случай:

    • Остаток должен быть равен 3 (последнее число в неизвестной системе), а частное должно равняться 1 (предпоследнее число в неизвестной системе):
    •  75|N 
        N|1  отсюда имеем => 75 - N = 3; т.е. N = 72
        3
      
    • Таким образом, мы получили одно из искомых оснований (72).
    • 2 случай:

    • Искомое оканчивается на цифру 3, значит:
    •  75|N 
       72|y  отсюда имеем => 75 = Ny + 3, где N - целое, неотриц.
        3
      
    • и далее, частное от деления — 1 (предпоследнее число):
    •  75|N  
       72|  y |N   => y = Nz + 1, где z - целое, неотриц.
        3  y-1|z
             1
      
    • Получаем два равенства (систему уравнений):
    • 75 = Ny + 3
      y = Nz + 1
      
    • Подставим y из второго равенства в первое:
    • 75 = N (Nz + 1) + 3;
      75 = N2z + N + 3;
      75 = N2z + N
    • Выразим z:
    • z = (72 - N)/N2
    • Учитывая то, что z — целое неотрицательное число, то 72 — N должно быть кратно N2, т.е. в числителе не может быть простого числа.
    • Простое число 67 получается путем вычитания из 72 числа 5. Соответственно, 5 нам не подходит: N ≠ 5:
    • 72 - 5 / 52 = 67 / 25  не делится, - не подходит!
    • Еще одно простое число — 71 получится при вычитании 72 — 1. Единица не подходит, так как при переводе в конце числа никак не останется 13: N ≠ 1.
    • Раз в знаменателе N2, то отбросим все числа, квадрат которых больше 72: 9, 10, … и т.д. до бесконечности: N < 9
    • Раз в итоговом числе есть число 13, значит основание системы счисления больше 3 (т.е. цифра три присутствует в системах, начиная с 4-й): N >= 4
    • Проверим оставшиеся варианты — 4, 6, 7, 8:
    •  75 | 4 
       72 | 18| 4 
        3   16| 2
             2  => не подходит! должна быть единица
      
       75 | 6 
       72 | 12| 6 
        3   12| 1
             0  => не подходит! должна быть единица
      
       75 | 7 
       70 
        5 => не подходит! должна быть 3 
      
       75 | 8 
       72 | 9| 8 
        3   8| 1
             1  => подходит!
      

    📹 Видео


    14_11: Разбор задания 14 ЕГЭ по информатике (с сайта К. Полякова, вариант 221):

    Выражение 25*325 записано в троичной системе счисления. Определите, сколько в этой записи цифр 0, 1 и 2.

    Ответ: «0»=26, «1»=2, «2»=1

    Показать решение:

      Рассмотрим каждый сомножитель отдельно.

    • Первый сомножитель:
    • 25 = 32
      
      Переведем в троичную систему счисления (делением на 3, переписываем остатки).
      Результат:
      3210 = 10123
      
    • Для рассмотрения второго сомножителя будем использовать правило:
    • Получим:
    • 325 = 10..0{25 нулей}3
    • Выполним произведение, но для простоты счета, представим, что нулей не 25, а только 3:
    •    1000 x
         1012 =
         ----
         2000
        1000
       0000
      1000
      -------
      1012000
      
    • В исходном числе было 3 нуля, стало 4. Значит если было 25 нулей, то станет 25 + 1 = 26.
    • Единиц = 2, двоек = 1.

    📹 Видео


    Информатика ЕГЭ 13 задание разбор

    13-е задание: «Информационные модели»
    Уровень сложности — повышенный,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 3 минуты.
      
    Проверяемые элементы содержания: Умение представлять и считывать данные в разных типах информационных моделей (схемы, карты, таблицы, графики и формулы)
    До ЕГЭ 2021 года — это было задание № 15 и № _ ЕГЭ

    Плейлист видеоразборов задания на YouTube:

    Задание демонстрационного варианта 2022 года ФИПИ


    ЕГЭ по информатике 2017 задание 13 (15) ФИПИ вариант 15 (Крылов С.С., Чуркина Т.Е.):

    На рисунке — схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

    Сколько существует различных путей, ведущих из города А в город М и проходящих через город Г?
    разбор 13 задания егэ информатика
      
    Типовые задачи для тренировки

    Ответ: 21

    Показать решение:

    • Удалим ребра, которые проходят «мимо» вершины Г или до которых от пункта А можно дойти, минуя вершину Г:
    • 1_1

    • Вершина В удалена, т.к. возможны только следующие траектории движения через этот пункт (которые НЕ проходят через пункт Г):
    • 1. А — Б — В — И — М
    • 2. А — Б — В — Е — И — М
    • 3. А — Б — В — Е — М
    • 4. А — Б — В — Е — К — М
    • Теперь посчитаем результаты по оставшимся вершинам:
    М = И + Е + К 
    -----
     И = Е 
       Е = Г + Ж 
        Г = Б + А + Д = 1 + 1 + 1 = 3 
        Ж = Г = 3
     К = Е + Ж
    
    Теперь возвращаемся, подставляя найденные значения: ↑
       Е = Г + Ж = 3 + 3 = 6 
        Ж = Г = 3
     И = Е = 6 (получили из последующих шагов)
     К = Е + Ж = 6 + 3 = 9       
    М = И + Е + К = 6 + 6 + 9 = 21  
    

    📹 Видео


    ЕГЭ по информатике 2017 задание 13 (15) ФИПИ вариант 14 (Крылов С.С., Чуркина Т.Е.):

    На рисунке — схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

    Сколько существует различных путей, ведущих из города А в город М и не проходящих через город Г?
    решение ЕГЭ по информатике 2017 задание 15

    Ответ: 7

    Показать решение:

    • Удалим ребра, которые проходят через вершину Г:
    • решение 13 задания егэ

    • Теперь посчитаем результаты по оставшимся вершинам:
    М = И + Е + К
    -----
    И = В + Е
      В = 1
      Е = В + Ж
         Ж = 1
    
    Теперь возвращаемся, подставляя найденные значения: ↑
      Е = В + Ж = 1 + 1 = 2
    И = В + Е = 1 + 2 = 3 
    К = Е = 2 
    М = И + Е + К = 3 + 2 + 2 = 7  
    

    📹 Видео


    13 (15) задание. Демоверсия ЕГЭ 2018 информатика:

    На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М.
    По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

    Сколько существует различных путей из города А в город М, проходящих через город Ж?
    демоверсия егэ информатика 2018 решение 13 (15) задания

    Ответ: 20

    Показать решение:

    Результат: 20

    📹 Видео


    13_4: 13 задание досрочного экзамена 2020 г, ФИПИ (вариант 1):

    На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
    Какова длина самого длинного пути из города А в город М?
    Длиной пути считать количество дорог, составляющих этот путь.

    Ответ: 9

    Показать решение:

    Результат: 9

    Информатика ЕГЭ 12 задание разбор

    12-е задание: «Алгоритмы с циклами и условиями»
    Уровень сложности — повышенный,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 4 минуты.
      
    Проверяемые элементы содержания: Умение анализировать результат исполнения алгоритма
    До ЕГЭ 2021 года — это было задание № 14 ЕГЭ

    Плейлист видеоразборов задания на YouTube:


    Задание демонстрационного варианта 2022 года ФИПИ

    Исполнитель Редактор и цепочки символов

    📹 Учимся по видео (решения разного типа программным способом):

    Какая строка получится?

    ЕГЭ по информатике 2017 задание 12 (14) ФИПИ вариант 3 (Крылов С.С., Чуркина Т.Е.):
    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

    А) заменить (v, w)
    Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

    Б) нашлось (v)
    Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

    Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 40 идущих подряд цифр 123? В ответе запишите полученную строку.

    НАЧАЛО
    ПОКА нашлось (12) ИЛИ нашлось (333)
      ЕСЛИ нашлось (12)
        ТО заменить (12, 3)
        ИНАЧЕ заменить (333, 3)
      КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ
    

    Ответ: 33
    📹 Видео (Теоретическое)

    Показать решение:

    ✎ Решение 1. Теоретическое:

    • Рассмотрим алгоритм: редактор будет выполнять команды только тогда, когда в строке встречается цепочка «12» или цепочка «333»;
    • если в строке есть «12», то тогда эта цепочка заменяется на «3»;
    • если в строке нет цепочки «12», но есть «333», то цепочка «333» заменяется на «3».
    • Теперь вернемся к условию нашей задачи. Условие цикла истинно, соответственно выполняем блок ЕСЛИ, т.е. делаем замену: в каждом из 40 чисел ‘123‘, заменяем 12 на 3. Получим 40 + 40 = 80 троек (40 троек было изначально и 40 добавилось);
    • 123123123...123
      ↓  ↓  ↓     ↓
      3 33 33 3...3 3
      
    • Так как больше чисел 12 у нас не встречается, то работает блок ИНАЧЕ. Сколько раз можно заменить в 80 подряд идущих тройках три тройки на одну? 80 делим на 3 получаем 26 раз + 2 тройки в остатке. Итого осталось 28 троек;
    • 333 333 333 333... 333 33
         26 троек по три
      получили:
      3   3   3   3  ... 3 33
               26          + 2
      
    • Теперь из 28 троек сколько раз мы можем заменить три тройки на одну? 28 делим на 3 и получаем 9 раз + 1 тройка в остатке. Итого 10 троек;
    • 333 333 333 333... 333 3
         9 троек по три   + 1
      получили:
      3   3   3   3  ... 3 3
               9          + 1
      
    • Делаем то же самое: 10 делим на 3 получаем 3 раза + 1 тройка в остатке = 4 тройки
    • 333 333 333 3
      3 тройки по три + 1
      получили:
      3   3   3   3
      
    • Последний раз делим 4 на 3, получаем 1 тройку + 1 = 2 тройки
    • 3 3 3 3
        ↓
        3   3 
      

    Результат: 33
      
    ✎ Решение 2. Программное:
    Pascalabc.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    begin
      var s := '123' * 40;
      while ('12' in s) or ('333' in s) do
      begin
        if '12' in s then
          s := s.Replace('12', '3', 1)
          else
          s := s.Replace('333', '3', 1);
      end; 
      print(s);
    end.
    Pascal (традиционный):

    begin
       var s := '123'*40;
       var p1 := Pos('12',s);
       var p2 := Pos('333',s);
       while (p1 > 0) or (p2 > 0) do begin
         if p1 > 0 then begin
           Delete( s, p1, 2 );
           Insert( '3', s, p1 );
         end
         else begin
           Delete( s, p2, 3 );
           Insert( '3', s, p2 );
         end;
         p1 := Pos('12',s);
         p2 := Pos('333',s);
       end; 
       write(s);
    end.
    Python:

    s = 40*'123'
    while "12" in s or "333" in s:
      if "12" in s:
        s = s.replace( "12", "3", 1 )
      else:
        s = s.replace( "333", "3", 1 )
    print(s)
    С++:

    #include<iostream>
    using namespace std;
    int main()
    {
       string s(40, '123'); 
       cout << s << endl;
       int p1 = s.find("12");
       int p2 = s.find("333");
       while( p1 != string::npos or p2 != string::npos ) {
          if( p1 != string::npos ) 
            s.replace( p1, 12, "3" );  
          else 
            s.replace( p2, 333, "3" );  
          p1 = s.find("12");
          p2 = s.find("333");
          cout << s << endl;
          }
       cout << s;
    }

    ЕГЭ по информатике 2017 задание 12 (14) ФИПИ вариант 5 (Крылов С.С., Чуркина Т.Е.):
    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

    А) заменить (v, w)
    Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

    Б) нашлось (v)
    Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

    Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 71 идущих подряд четверок цифр 1122? В ответе запишите полученную строку.

    НАЧАЛО
    ПОКА нашлось (12) ИЛИ нашлось (222)
      ЕСЛИ нашлось (12)
        ТО заменить (12, 2)
        ИНАЧЕ заменить (222, 2)
      КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ
    

    Ответ: 22

    Показать решение:

    ✎ Решение 1. Теоретическое:

    • Для удобства решения сначала сократим исходную цепочку до одной группы цифр:
    • 1122
    • Условие цикла истинно (ПОКА нашлось (12)), и условие в цикле истинно (ЕСЛИ нашлось (12)), значит, делаем замену: в первой группе цифр «1122«, заменяем 12 на 2:
    • 1122 => 122
    • Затем опять возвращаемся к условию цикла: условие цикла истинно (ПОКА нашлось (12)), и условие в цикле истинно (ЕСЛИ нашлось (12)), делаем опять замену: в первой группе цифр «122«, заменяем 12 на 2:
    • 122 => 22
    • Таким образом, получаем, что за две итерации цикла (2 шага), одна группа цифр превращается в две двойки.
    • Поскольку по условию имеем 71 группу цифр, то, чтобы узнать сколько двоек мы получим в результате выполнения условия ЕСЛИ нашлось (12), нам необходимо 71 умножить на 2 (кол-во двоек, получаемых из одной группы цифр):
    • 71 * 2 = 142 двойки из 71 группы 
      
    • То есть в итоге работы цикла и условия ЕСЛИ нашлось (12) мы получили всего 142 двоек.
    • Теперь работает условие ИНАЧЕ заменить (222, 2). Из 142 двоек каждые три заменяем на одну. Чтобы рассчитать итоговое количество двоек, необходимо 142 разделить на 3 (т.е. сколько раз можно заменять тройки двоек на одну двойку). Делить необходимо до тех пор, пока работает условие ИНАЧЕ заменить (222, 2):
    • 142 / 3 = 47 двоек + 1 двойка (остаток) = 48 двоек
      
    • 48 / 3 = 16 двоек
    • 16 / 3 = 5 двоек + 1 двойка (остаток) = 6 двоек
    • 6 / 3 = 2 двойки
    • В итоге осталось 2 двойки.

    ✎ Решение 2. Программное:
    Pascalabc.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    begin
      var s := '1122' * 71;
      while ('12' in s) or ('222' in s) do
      begin
        if '12' in s then
          s := s.Replace('12', '2', 1)
          else
          s := s.Replace('222', '2', 1);
      end; 
      print(s);
    end.
    Pascal (традиционный):

    begin
       var s := '1122'*71;
       var p1 := Pos('12',s);
       var p2 := Pos('222',s);
       while (p1 > 0) or (p2 > 0) do begin
         if p1 > 0 then begin
           Delete( s, p1, 2 );
           Insert( '2', s, p1 );
         end
         else begin
           Delete( s, p2, 3 );
           Insert( '2', s, p2 );
         end;
         p1 := Pos('12',s);
         p2 := Pos('222',s);
       end; 
       write(s);
    end.
    Python:

    s = 71*'1122'
    while "12" in s or "222" in s:
      if "12" in s:
        s = s.replace( "12", "2", 1 )
      else:
        s = s.replace( "222", "2", 1 )
    print(s)
    С++:

    #include<iostream>
    using namespace std;
    int main()
    {
       string s(71, '1122'); 
       cout << s << endl;
       int p1 = s.find("12");
       int p2 = s.find("222");
       while( p1 != string::npos or p2 != string::npos ) {
          if( p1 != string::npos ) 
            s.replace( p1, 12, "2" );  
          else 
            s.replace( p2, 222, "2" );  
          p1 = s.find("12");
          p2 = s.find("222");
          cout << s << endl;
          }
       cout << s;
    }

    ЕГЭ по информатике 2017 задание 12 (14) ФИПИ вариант 7 (Крылов С.С., Чуркина Т.Е.):
    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

    А) заменить (v, w)
    Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

    Б) нашлось (v)
    Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

    Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 200 идущих подряд цифр 7? В ответе запишите полученную строку.

    НАЧАЛО
    ПОКА нашлось (99) ИЛИ нашлось (777)
      ЕСЛИ нашлось (777)
        ТО заменить (777, 9)
        ИНАЧЕ заменить (99, 7)
      КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ
    

      
    Типовые задачи для тренировки

    Ответ: 977
    📹 Видео (Теоретическое)

    Показать решение:

    • Рассмотрим алгоритм: редактор будет выполнять команды только тогда, когда в строке встречается цепочка «99» или цепочка «777»;
    • если в строке есть «777», то тогда эта цепочка заменяется на «9»;
    • если в строке нет цепочки «777», но есть «99», то цепочка «99» заменяется на «7».
    • Теперь вернемся к условию нашей задачи. Условие цикла истинно, условие ЕСЛИ нашлось 777 тоже истинно, делаем замену:
    • сколько раз можно заменить в 200 семерках три семерки на одну девятку? 200 делим на 3 получаем 66 замен, т.е. 66 цифр «9» + 2 семерки в остатке;
    • 777 777 ... 777 77
      получили:
      9...9   7766
      
    • После выполнения этих преобразований условие ЕСЛИ нашлось 777 ложно. Значит, выполняется блок ИНАЧЕ: Заменить 99 на 7:
    • [66 цифр «9»] + «77» -> «7» + [64 цифры «9»] + «77»:
    •     66 цифр
      99 999...999 77
       ↓
       7  999...999 77
           64 цифры
      
    • «7» + [64 цифры «9»] + «77» -> «7» + «7» + [62 цифры «9»] + «77»:
    •     64 цифры
      799 999...999 77
       ↓
      77   999...999 77
             62 цифры
      
    • «77» + [62 цифры «9»] + «77» -> «7» + «77» + [60 цифр «9»] + «77»:
    •      62 цифры
      7799 999...999 77
        ↓
      777  999...999 77
              60 цифр
      
    • Затем условие ЕСЛИ нашлось 777 опять становится истинным. Выполняется команда Заменить 777 на 9:
    •       60 цифр
      777 999...999  77
       ↓
       9   999...999 77
            61 цифра
      
    • Вернулись к той же «картине», что и после первого пункта. За эти шаги произошли преобразования, заменившие 66 девяток на 61 девятку, т.е. количество цифр «9» уменьшилось на 5 раз, а две цифры «77» так и остались в конце общей цепочки.
    • Чтобы рассчитать итоговое количество цифр «9», необходимо понять, сколько раз можно вычитать из 61 по 5 девяток:
    • 61 : 5 = 12 раз 
      12 раз возможно отнять по 5 девяток и 1 девятка останется "в остатке" 
    • Таким образом, после выполнения алгоритма, остается одна цифра «9» (в остатке) и в конце так и останутся две семерки: 977.

    Разбор 12 (14) задания ЕГЭ по информатике 2019 г. «10 тренировочных вариантов для подготовки к ЕГЭ» Д.М. Ушаков:

    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

    А) заменить (v, w)
    Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

    Б) нашлось (v)
    Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

    Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 90 идущих подряд цифр 3 и в конце одной цифры 1? В ответе запишите полученную строку.

    НАЧАЛО
    ПОКА нашлось (331) ИЛИ нашлось (166)
      ЕСЛИ нашлось (331)
        ТО заменить (331, 16)
        ИНАЧЕ заменить (166, 31)
      КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ
    

    Ответ: 316
    📹 Видео (Теоретическое)

    Показать решение:

      ✎ Решение 1. Программное:
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      begin
        var s := '3' * 90 + '1';
        while ('331' in s) or ('166' in s) do
        begin
          if '331' in s then
            s := s.Replace('331', '16', 1)
            else
            s := s.Replace('166', '31', 1);
        end; 
        print(s);
      end.
      Pascal (традиционный):

      begin
         var s := '3'*90 + '1';
         var p1 := Pos('331',s);
         var p2 := Pos('166',s);
         while (p1 > 0) or (p2 > 0) do begin
           if p1 > 0 then begin
             Delete( s, p1, 3 );
             Insert( '16', s, p1 );
           end
           else begin
             Delete( s, p2, 3 );
             Insert( '31', s, p2 );
           end;
           p1 := Pos('331',s);
           p2 := Pos('166',s);
         end; 
         write(s);
      end.
      Python:

      s = 90*'3'+'1'
      while "331" in s or "166" in s:
        if "331" in s:
          s = s.replace( "331", "16", 1 )
        else:
          s = s.replace( "166", "31", 1 )
      print(s)
      С++:

      #include<iostream>
      using namespace std;
      int main()
      {
         string s(90, '3'); 
         s+='1';
         cout << s << endl;
         int p1 = s.find("331");
         int p2 = s.find("166");
         while( p1 != string::npos or p2 != string::npos ) {
            if( p1 != string::npos ) 
              s.replace( p1, 331, "16" );  
            else 
              s.replace( p2, 166, "31" );  
            p1 = s.find("331");
            p2 = s.find("166");
            cout << s << endl;
            }
         cout << s;
      }

    Сколько удалено?

    Решение 12 задачи № 178 (с сайта К. Полякова):

    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

    А) заменить (v, w)
    Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

    Б) нашлось (v)
    Дана программа для исполнителя Редактор:

    ПОКА нашлось (555) ИЛИ нашлось (333)
      ЕСЛИ нашлось (333)
        ТО заменить (333, 5)
        ИНАЧЕ заменить (555, 3)
      КОНЕЦ ЕСЛИ 
    КОНЕЦ ПОКА 
    

    Дана строка, состоящая из 500 цифр 5. Сколько пятёрок было удалено за время обработки строки по этой программе?

    Ответ: 561

    Показать решение:

    ✎ Решение 1. Теоретическое:

    • Выполним несколько итераций цикла ПОКА. Когда мы получим ту же самую последовательность цифр пять, за исключением их количества — остановимся:
    • 5..5
      500шт 
      
      1: Работает блок ИНАЧЕ (555->3):
      35..5
       497шт
      
      2: Работает блок ИНАЧЕ (555->3):
      335..5
        494шт
      
      3: Работает блок ИНАЧЕ(555->3):
      3335..5
         491шт
      
      4: Работает блок ЕСЛИ (333->5):
      5..5
      492шт
      
    • Остановились, так как мы пришли к исходной последовательности цифр пять. Проанализируем действия программы за этот фрагмент выполнения: было удалено 9 пятерок и одна пятерка добавилась. Ключевой вывод: было удалено 9 пятерок.
    • Всего за выполнение этого фрагмента программы «ушло» 8 пятерок: 500 - 492 = 8. Посчитаем, сколько раз можно выполнить данный фрагмент:
    • 500 : 8 = 62 и 4 в остатке
      
    • Т.е. 62 раза выполняется данный фрагмент и 4 цифр 5 еще остается (остаток = 4). Поскольку за одно выполнение фрагмента было удалено 9 цифр 5, посчитаем, сколько удалится за 62 выполнения:
    • 62 * 9 = 558
      
    • 558 цифр 5 было удалено. Посмотрим выполнение программы над оставшимися 4 цифрами 5:
    • Работает блок ИНАЧЕ(555->3):
      5555 = 35
       
    • Итого получаем удаленных цифр 5:
    • 558 + 3 = 561
      

    ✎ Решение 2. Программное:
    Pascalabc.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    begin
      var s := '5' * 500;
      var k := 0;
      while ('555' in s) or ('333' in s) do
      begin
        if '333' in s then
          s := s.Replace('333', '5', 1)
          else
        begin
          s := s.Replace('555', '3', 1);
          k += 3;
        end;
      end; 
      print(k);
    end.
    Pascal (традиционный):

    begin
       var k:= 0;
       var s := '5'*500 ;
       var p1 := Pos('555',s);
       var p2 := Pos('333',s);
       while (p1 > 0) or (p2 > 0) do begin
         if p2 > 0 then begin
           Delete( s, p2, 3 );
           Insert( '5', s, p2 );
         end
         else begin
           Delete( s, p1, 3 );
           Insert( '3', s, p1 );
           inc(k,3);
         end;
         p1 := Pos('555',s);
         p2 := Pos('333',s);
       end; 
       write(k);
    end.
    Python:

    s = 500*'5'
    k=0
    while "555" in s or "333" in s:
      if "333" in s:
        s = s.replace( "333", "5", 1 )
      else:
        s = s.replace( "555", "3", 1 )
        k+=3;
    print(k)
    С++:

    #include<iostream>
    using namespace std;
    int main()
    {
       string s(500, '5');
       int k = 0; 
       cout << s << endl;
       int p1 = s.find("555");
       int p2 = s.find("333");
       while( p1 != string::npos or p2 != string::npos ) {
          if( p2 != string::npos ) 
            s.replace( p2, 333, "5" );  
          else  
            {
            s.replace( p1, 555, "3" );  
            k+=2;
            }
          p1 = s.find("555");
          p2 = s.find("333");
          cout << s << endl;
          }
       cout << k;
    }

    📹 Видео (Теоретическое)


    Чему равна сумма цифр?

    12 (14) задание досрочного экзамена 2020 г, ФИПИ (варианта №1):

    На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая 10 цифр 1, 20 цифр 2 и 30 цифр 3, расположенных в произвольном порядке.
    Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы.

    Так, например, если результат работы программы представлял бы собой строку, состоящую из 50 цифр 4, то верным ответом было бы число 200.
    НАЧАЛО
    ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
     ЕСЛИ нашлось (>1)
       ТО заменить (>1, 22>)
     КОНЕЦ ЕСЛИ
     ЕСЛИ нашлось (>2)
       ТО заменить (>2, 2>)
     КОНЕЦ ЕСЛИ
     ЕСЛИ нашлось (>3)
       ТО заменить (>3, 1>)
     КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ 
    

    Ответ: 110

    📹 Видео (Теоретическое)

    Показать решение:

    ✎ Решение 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 s := '>' + '1' * 10 + '2' * 20 + '3' * 30;
      var k := 0;
      while ('>1' in s) or ('>2' in s) or ('>3' in s) do
      begin
        if '>1' in s then
          s := s.Replace('>1', '22>', 1);
        if '>2' in s then
          s := s.Replace('>2', '2>', 1);
        if '>3' in s then
          s := s.Replace('>3', '1>', 1);
      end; 
      var sum := s.CountOf('1') + s.CountOf('2') * 2 + s.CountOf('3') * 3;
      {или так:
       var sum: integer;
       for var i := 1 to s.Count do
       if (s[i]='1') or (s[i]='2') or(s[i]='3') then
          sum:=sum + StrToInt(s[i]);
      }
    print(sum)
    end.
    Pascal (традиционный):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    begin
      var s := '>' + '1' * 10 + '2' * 20 + '3' * 30;
      var p1 := pos('>1', s);
      var p2 := pos('>2', s);
      var p3 := pos('>3', s);
      while (p1 <> 0) or (p2 <> 0) or (p3 <> 0) do
      begin
        if p1 <> 0 then
        begin
          delete(s, p1, 2);
          insert('22>', s, p1)
        end;
        if p2 <> 0 then
        begin
          delete(s, p2, 2);
          insert('2>', s, p2)
        end;
        if p3 <> 0 then
        begin
          delete(s, p3, 2);
          insert('1>', s, p3)
        end;
        p1 := pos('>1', s);
        p2 := pos('>2', s);
        p3 := pos('>3', s);
      end;
      println(s);
      var sum : integer;
      for var i := 1 to s.Count do
         sum := s.CountOf('1') + s.CountOf('2') * 2 + s.CountOf('3') * 3;
      {или так:
       if (s[i]='1') or (s[i]='2') or(s[i]='3') then
          sum:=sum + StrToInt(s[i]);
      }
      print(sum)
    end.
    Python:

    1
    
     
    С++:

    1
    
     

    Сколько конкретных цифр?

    12_10: 12 задание № 195 (с сайта К. Полякова):

    Дана программа для исполнителя Редактор:

    НАЧАЛО
     	   ПОКА нашлось (12) ИЛИ нашлось (1)
       	      ЕСЛИ нашлось (12)
        	          ТО заменить (12, 2221)
        	     ИНАЧЕ заменить (1,222222)
        	     КОНЕЦ ЕСЛИ
     	   КОНЕЦ ПОКА
    КОНЕЦ
    

    Какая строка получится в результате применения приведённой ниже программы к строке, состоящей одной единицы и 51 стоящих справа от неё цифр 2? В ответ, запишите, сколько цифр 2 будет в конечной строке.

    Ответ: 159

    Показать решение:

      ✎ Решение 1. Программное:
      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      begin
        var s := '1' + '2' * 51;
        while ('12' in s) or ('1' in s) do
        begin
          if '12' in s then
            s := s.Replace('12', '2221', 1)
          else
            s := s.Replace('1', '222222', 1);
        end; 
        print(s.CountOf('2'))
      end.
      Pascal (традиционный):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var s := '1' + '2' * 51;
        var p1 := pos('12', s);
        var p2 := pos('1', s);
        while (p1 <> 0) or (p2 <> 0) do
        begin
          if p1 <> 0 then
          begin
            delete(s, p1, 2);
            insert('2221', s, p1)
          end
          else
          begin
            delete(s, p2, 1);
            insert('222222', s, p2)
          end;
          p1 := pos('12', s);
          p2 := pos('1', s);
        end;
        print(s.CountOf('2'))
      end.
      Python:

      1
      
       
      С++:

      1
      
       

    Укажите минимальную возможную длину входной строки

    12_11: 12 задание № 280 (с сайта К. Полякова):

    Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.

    заменить (v, w) 
    нашлось (v)

    Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.

    Дана программа для Редактора:

    ПОКА нашлось (555) ИЛИ нашлось (888)
      заменить (555, 8)
      заменить (888, 55)
    КОНЕЦ ПОКА
    

    Известно, что начальная строка состоит более чем из 300 цифр 5 и не содержит других символов. В ходе работы алгоритма получилась строка, содержащая одну цифру 5 и одну цифру 8. Укажите минимальную возможную длину входной строки.

    Ответ: 305

    Показать решение:

      ✎ Решение 1. Программное:
      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      
      begin
        for var i := 301 to 1000 do
        begin
          var s := '5' * i;
          while ('555' in s) or ('888' in s) do
          begin
            s := s.Replace('555', '8', 1);
            s := s.Replace('888', '55', 1);
          end; 
          if (s.countOf('5') = 1) and (s.countOf('8') = 1) then
          begin
            print(i);
            break;
          end
        end;
      end.
      Pascal (традиционный):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      
      begin
        for var i := 301 to 1000 do
        begin
          var s := '5' * i;
          var p1 := pos('555', s);
          var p2 := pos('888', s);
          while (p1 <> 0) or (p2 <> 0) do
          begin
            if p1 <> 0 then
            begin
              delete(s, p1, 3);
              insert('8', s, p1);
            end;
            p2 := pos('888', s); // обязательно!
            if p2 <> 0 then
            begin
              delete(s, p2, 3);
              insert('55', s, p2);
            end;
            p1 := pos('555', s);
            p2 := pos('888', s);    
          end;
          if (s.countOf('5') = 1) and (s.countOf('8') = 1) then
          begin
            print(i);
            break;
          end
        end;
      end.
      Python:

      1
      
       
      С++:

      1
      
       

    Решение заданий прошлых лет (до 2021)

    Исполнитель Робот

    Решение 12 (14) задания ЕГЭ по информатике (контрольный вариант № 2 экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков):

    Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает 4 команды-приказа и 4 команды проверки условия.
    Команды-приказы:

    вверх   вниз   влево   вправо

    Другие четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:

    сверху свободно    
    снизу свободно    
    слева свободно    
    справа свободно

    Сколько клеток приведенного лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

    НАЧАЛО
    ПОКА < снизу свободно ИЛИ справа свободно >
      ЕСЛИ < справа свободно > ТО вправо КОНЕЦ ЕСЛИ
      ПОКА < снизу свободно > вниз КОНЕЦ ПОКА
    КОНЕЦ ПОКА
    КОНЕЦ
    

    егэ 2018 информатика тренажер

    Ответ: 21

    Показать решение:

    • Рассмотрим тело внешнего цикла и операторы, которые в нем находятся:
    • 1. В цикле выполняется проверка ЕСЛИ справа свободно ТО вправо: что означает движение на один шаг вправо (если это возможно)
    • 2. Затем располагается цикл с условием пока снизу свободно вниз: что означает движение до конца вниз (пока это возможно)
    • После чего внешний цикл повторяется.
    • Таким образом, отметим «тупиковые» клетки, т.е. те, которые не позволят двигаться роботу к цели:
    • A5, A6, B1, B2, B6, C1, C2, D1, D2, D3, D4, D5, E3, E4, E5
    • Таких клеток получилось 15. Вычислим подходящие клетки (всего клеток 36):
    • 36 - 15 = 21

    Решение 12 задания (К. Поляков, вариант № 52):

    Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

    НАЧАЛО
    ПОКА < справа свободно ИЛИ снизу свободно >
      ПОКА < снизу свободно >
        вниз
      КОНЕЦ ПОКА
      ПОКА < справа свободно >
        вправо
      КОНЕЦ ПОКА
    КОНЕЦ ПОКА
    КОНЕЦ
    

    решение 12 задания егэ, робот

    Ответ: 19

    Показать решение:

    Результат: 19

    📹 Видео


    Исполнитель Чертежник

    12 (14) задание. Демоверсия ЕГЭ 2018 информатика:

    Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (a, b), где a, b – целые числа. Эта команда перемещает Чертёжника из точки с координатами (x,y) в точку с координатами (x + a, y + b).

    Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться на (2, −3) переместит Чертёжника в точку (6, −1).
     
    Цикл

    ПОВТОРИ число РАЗ
    последовательность команд
    КОНЕЦ ПОВТОРИ

    означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

    Чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны):

    НАЧАЛО
    сместиться на (4, 6)
      ПОВТОРИ … РАЗ
        сместиться на (…, …)
        сместиться на (4, -6)
      КОНЕЦ ПОВТОРИ
    сместиться на (-28, -22)
    КОНЕЦ
    

    В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку.
    Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ … РАЗ»?

    Подобные задания для тренировки

    Ответ: 8

    Показать решение:

    Результат: 8

    📹 Видео



    Информатика ЕГЭ 11 задание разбор

    11-е задание: «Информационный объем сообщения»
    Уровень сложности — повышенный,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 3 минуты.
      
    Проверяемые элементы содержания: Умение подсчитывать информационный объём сообщения
    До ЕГЭ 2021 года — это было задание № 13 ЕГЭ

    Плейлист видеоразборов задания на YouTube:

    Задание демонстрационного варианта 2022 года ФИПИ


    Кодирование сообщений (работа с текстом)

    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 4):

    Объем сообщения – 7,5 Кбайт. Известно, что данное сообщение содержит 7680 символов. Какова мощность алфавита?
      
    Типовые задания для тренировки

    Ответ: 256

    Показать решение:

    • Воспользуемся формулой:
    • I = N * K
      I - объем сообщения
      N - количество символов 
      K - количество бит на 1 символ
    • В нашем случае N = 7680 символов, на которые выделено I = 7,5 Кбайт памяти. Найдем количество бит, необходимое для хранения одного символа (сначала переведя Кбайты в биты):
    • I = 7,5 Кбайт = 7,5 * 213 бит

      \[ K = \frac {7,5 * 2^{13}}{7680} = \frac {7,5 * 2^{13}}{15 * 2^9} = \frac {7,5 * 16}{15} = 8 \]

    • 8 бит на символ позволяют закодировать:
    • 28 = 256 различных символов
      (по формуле Q = 2N)

    • 256 символов — это и есть мощность

    📹 Видео


    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 6):

    Мощность алфавита равна 256. Сколько Кбайт памяти потребуется для сохранения 160 страниц текста, содержащего в среднем 192 символа на каждой странице?
      
    Типовые задания для тренировки

    Ответ: 30

    Показать решение:

    • Найдем общее количество символов на всех страницах (для удобства будем использовать степени двойки):
    • 160 * 192 = 15 * 211
    • По формуле Q = 2n найдем количество бит, требуемое на хранение одного символа (в нашем случаем Q = 256):
    • 256 = 2n 
      -> n = 8 бит на 1 символ
    • Воспользуемся формулой I = N * K и найдем требуемый объем:
    • \[ I = {15 * 2^{11}} * 2^3 бит = \frac {15 * 2^{14}}{2^{13}} Кбайт = 30 Кбайт \]

      I = 30 Кбайт
      

    📹 Видео


    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 3):

    Два текста содержат одинаковое количество символов. Первый текст составлен в алфавите мощностью 16 символов, а второй текст – в алфавите из 256 символов.
    Во сколько раз количество информации во втором тексте больше, чем в первом?

    Ответ: 2

    Показать решение:

    • Необходима формула Q = 2n
    • Вычислим требуемое количество бит на хранение одного символа для обоих текстов:
    • 1.  16 = 2n -> n = 4
      2.  256 = 2n -> n = 8
    • Найдем во сколько раз количество информации (объем) во втором тексте больше:
    • 8 / 4 = 2

    Работа с различными системами

    ЕГЭ 2017 сборник Д.М. Ушакова «10 тренировочных вариантов…» вариант 1:

    Кабельная сеть проводит голосование среди зрителей о том, какой из четырех фильмов они хотели бы посмотреть вечером. Кабельной сетью пользуются 2000 человек. В голосовании участвовало 1200 человек.
    Каков объем информации (в байтах), записанный автоматизированной системой голосования?

    Ответ: 300

    Показать решение:

    • Так как номера четырех фильмов хранятся в компьютерной системе, то можно найти количество бит, необходимое для хранения номера фильма:
    • Q = 2k   
      -> 4 = 2k 
      -> k = 2 бита
    • Так как все 1200 человек будут голосовать за один из фильмов, соответственно, на каждый голос нужно выделить такой же объем памяти (т.е. 2 бита).
    • Найдем количество бит, необходимое для хранения всех 1200 голосов:
    • 1200 * 2 = 2400 бит = 2400/8 байт = 300 байт

    📹 Видео


    ЕГЭ 2017 сборник Д.М. Ушакова «10 тренировочных вариантов…» вариант 10:

    Репетиционный экзамен в школе сдают 105 человек. Каждому из них выделяют специальный номер, идентифицирующий его в автоматической системе проверки ответов. При регистрации участника для записи его номера система использует минимально возможное количество бит, одинаковое для каждого участника.

    Каков объем информации в битах, записанный устройством после регистрации 60 участников?

    Ответ: 420

    Показать решение:

    Результат: 420

    📹 Видео


    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 17):

    В базе данных хранятся записи, содержащие информацию о датах. Каждая запись содержит три поля: год (число от 1 до 2100), номер месяца (число от 1 до 12) и номер дня в месяце (число от 1 до 31). Каждое поле записывается отдельно от других полей с помощью минимально возможного числа бит.
    Определите минимальное количество бит, необходимых для кодирования одной записи.

    Ответ: 21

    Показать решение:

    • Необходима формула Q = 2n.
    • Вычислим требуемое количество бит на хранение каждого пункта всей записи:
    • 1. 2100 вариантов: 2100 ~ 212 -> n = 12 бит
      2. 12 вариантов: 12 ~ 24 -> n = 4 бит
      3. 31 вариант: 31 ~ 25 -> n = 5 бит
      
    • Найдем общее количество бит для всей записи:
    • 12 + 4 + 5 = 21

    Решение 11 (13) задания ЕГЭ по информатике (контрольный вариант №1 экзаменационной работы, Тренажер 2018 года, С.С. Крылов, Д.М. Ушаков):

    Репетиционный экзамен сдают 9 потоков по 100 человек в каждом. Каждому из них выделяют специальный код, состоящий из номера потока и номера в потоке. При кодировании этих номеров участников проверяющая система использует минимально возможное количество бит, одинаковое для каждого участника, отдельно для номера потока и номера в потоке. При этом для записи кода используется минимально возможное и одинаково целое количество байтов.
    Каков объем информации в байтах, записанный устройством после регистрации 80 участников?
    В ответе укажите только число.

    Ответ: 160

    Показать решение:

    • Код состоит из двух составляющих: 1. номер потока (в битах) и 2. номер по порядку (в битах). Найдем количество бит, необходимое для их хранения:
    • 1. N = 2i -> 9 = 2i -> i = 4 бит 
      (23 < 9 < 24) 
      
      2. N = 2i -> 100 = 2i -> i = 7 бит 
      (26 < 100 < 27) 
      
    • Итого получаем 4 + 7 = 11 бит на один код. Но на хранение кода по условию выделяется целое число байт. Значит переведем получившийся результат в байты:
    • 11/ 8 ~ 2 байта (одного байта недостаточно, 8 < 11) 
      
    • Так как нам необходимо получить объем информации после регистрации 80 участников, то вычисляем:
    • 2 * 80 = 160 байт

    📹 Видео


    Компьютерные системы и автомобильные номера

    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 33):

    Автомобильный номер состоит из нескольких букв (количество букв одинаковое во всех номерах), за которыми следуют три цифры. При этом используются 10 цифр и только 5 букв: Н, О, М, Е и Р. Нужно иметь не менее 100 тысяч различных номеров.
    Какое наименьшее количество букв должно быть в автомобильном номере?

    Ответ: 3

    Показать решение:

    • Необходима формула Q = mn.
    • Q - количество вариантов
      m - мощность алфавита
      n - длина
    • Составим правую часть формулы, исходя из данных условия задания (неизвестное количество букв (из пяти вариантов) и три цифры (из 10 вариантов)):
    • 5 ... 5 10 10 10 = 5x * 103 
      
    • Весь этот результат по условию должен быть не менее 100000. Подставим остальные данные в формулу:
    • 100000 <= 5x * 103 
      
    • Отсюда найдем наименьший подходящий x:
    • x = 3: 
      53 * 1000 = 125000 (125000 > 100000)
      

    📹 Видео


    11 (13) задание. Демоверсия ЕГЭ 2018 информатика:

    При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 10 символов. В качестве символов используют прописные буквы латинского алфавита, т.е. 26 различных символов. В базе данных для хранения каждого пароля отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит.

    Определите объём памяти (в байтах), необходимый для хранения данных о 50 пользователях.
    В ответе запишите только целое число – количество байт.

    Ответ: 350

    Показать решение:

    • Основной формулой для решения данной задачи является:
    • Q = 2N

      где Q - количество вариантов символов, которые можно закодировать с помощью N бит.

    • Чтобы найти количество бит, необходимое для хранения одного пароля, для начала нужно найти количество бит, необходимых для хранения 1 символа в пароле. По формуле получаем:
    • 26 = 2N 
      -> N ~ 5 бит
      
    • Пароль состоит из 10 символов. Значит на пароль необходимо выделить бит:
    • 10 * 5 = 50 бит всего на пароль
    • Поскольку сведения о пароле сохраняются в байтах, то переведем:
    • 50 бит / 8 ~ 7 байт 
      (берем ближайшее число большее 50 и кратное 8: 56/8 = 7)
      
    • Теперь найдем сколько байт отводится для хранения информации о 50 пользователях:
    • 7 байт * 50 (пользователей) = 350 байт

    📹 Видео


    Решение 11 (13) задания ЕГЭ по информатике (диагностический вариант экзаменационной работы, Тренажер ЕГЭ 2018 года, С.С. Крылов, Д.М. Ушаков):

    В некоторой стране автомобильный номер состоит из 7 символов. Каждый символ может быть одной из 18 различных букв или десятичной цифрой.

    Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байт, при этом используют посимвольное кодирование и каждый символ кодируется одинаковым и минимально возможным количеством бит.

    Определите объем памяти в байтах, отводимый этой программой для записи 50 номеров.
    В ответе укажите только число.

    Ответ: 250

    Показать решение:

    • Так как в номере может быть использована либо одна буква из 18, либо одна цифра из 10, то всего в качестве одного символа в номере может быть использован один из 28 символов:
    • 18 + 10 = 28
      
    • Определим, сколько понадобится бит для хранения одного символа в номере, для этого используем формулу N = 2i:
    • 28 = 2i 
      => i = 5
      
    • Поскольку общее количество символов в номере равно 7, то получим необходимое количество бит на хранение одного номера:
    • I = 7 * 5 = 35 бит
      
    • Поскольку на хранение номера выделяется одинаковое количество байт, то переведем в байты:
    • 35 / 8 ~ 5 байт
      
    • В задаче спрашивается, сколько потребуется памяти для хранения 50 номеров. Находим:
    • I = 50 * 5 = 250 байт на хранение 50 номеров
      

    📹 Видео


    11_14: Разбор 11 задания ЕГЭ по информатике (К. Поляков, в. 37)::

    При регистрации в компьютерной системе каждому пользователю выдаётся идентификатор, состоящий из 10 символов, первый и последний из которых — одна из 18 букв, а остальные — цифры (допускается использование 10 десятичных цифр). Каждый такой идентификатор в компьютерной программе записывается минимально возможным и одинаковым целым количеством байт (при этом используют посимвольное кодирование; все цифры кодируются одинаковым и минимально возможным количеством бит, все буквы также кодируются одинаковым и минимально возможным количеством бит).
      
    Определите объём памяти, отводимый этой программой для записи 25 паролей. (Ответ дайте в байтах.)

    Ответ: 150

    Показать решение:

    • Идентификатор пароля по заданию состоит из букв и цифр, необходимо рассмотреть отдельно эти составляющие.
    • Поскольку в пароле может присутствовать 18 букв, то подсчитаем, сколько бит необходимо для хранения 1-й буквы:
    • С помощью n бит можно закодировать 2n различных вариантов, 
      Иначе говоря 18 = 2n, -> n = 5 бит (т.к. 4 мало, 24=16, 25 = 32) 
      
    • Теперь подсчитаем количество бит, необходимое для хранения одной цифры. По условию используется 10 цифр:
    • 10 = 2n, -> n = 4 бита (т.к. 3 мало, 23=8, 24 = 16) 
      
    • Так как по условию длина идентификатора 10 символов, первый и последний из которых — одна из 18 букв, а остальные — цифры, то получим:
    • В битах:
      5 4 4 4 4 4 4 4 4 5
      или:
      5 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 5 = 5 * 2 + 4 * 8 = 42 бита
      
    • Так как для записи используется целое число байт, то берём ближайшее не меньшее значение, кратное восьми:
    • 48 = 6·8 бит (6 байт).
    • Тогда 25 паролей занимают:
    •  6·25 = 150 байт

    📹 Видео


    ЕГЭ 2017 сборник Д.М. Ушакова "10 тренировочных вариантов..." вариант 6:

    При регистрации в компьютерной системе каждому пользователю выдается пароль, состоящий из 15 символов и содержащий только символы из 12-символьного набора A, B, C, D, E, F, G, H, I, K, L, M, N. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено 12 байт на одного пользователя.

    Определите объем памяти (в байтах), необходимый для хранения сведений о 30 пользователях.
    В ответе запишите только целое число - количество байт.
      
    Типовые задания для тренировки

    Ответ: 600

    Показать решение:

    Результат: 600

    📹 Видео


    ЕГЭ по информатике 2017 задание 11 (13) ФИПИ вариант 1 (Крылов С.С., Чуркина Т.Е.):

    При регистрации в компьютерной системе каждому пользователю выдается пароль, состоящий из 7 символов и содержащий только символы из 33-символьного алфавита. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственного пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей.

    Для хранения сведений о 60 пользователях потребовалось 900 байт.

    Сколько байт выделено для хранения дополнительных сведений об одном пользователе?
    В ответ запишите только целое число - количество байт.
      
    Типовые задания для тренировки

    Ответ: 9

    Показать решение:

    • Сначала определимся с паролем. По формуле Q = MN получаем:
    • 33 = 2N 
      -> N = 6 бит на 1 символ
      
    • Пароль состоит из 7 символов:
    • -> 7*6 = 42 бит всего на пароль 
    • Так как все данные о пользователях хранятся в байтах, то возьмем ближайшее число большее 42 и кратное 8:
    • 48/8 = 6
      
      42 бит ~ 6 байт
      
    • Теперь найдем сколько байт отводится для хранения информации об одном пользователе:
    • 900 байт / 60 (пользователей) = 15 байт на каждого пользователя
    • Получим объем памяти для хранения дополнительных сведений:
    • 15 байт (на хранение всей информации) - 6 байт (на хранение пароля) = 9 байт на дополнительные сведения

    📹 Видео


    Решение 11 задания ЕГЭ по информатике (К. Поляков, в. 58):

    При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 9 символов. В качестве символов используют прописные и строчные буквы латинского алфавита (в нём 26 символов), а также десятичные цифры. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено 18 байт на одного пользователя. В компьютерной системе выделено 1 Кб для хранения сведений о пользователях.

    О каком наибольшем количестве пользователей может быть сохранена информация в системе? В ответе запишите только целое число – количество пользователей.

    Ответ: 40

    Показать решение:

    • Так как используются как прописные, так и строчные буквы, то получим всего вариантов символов для кодирования:
    • 26 + 26 + 10 = 62
    • Из формулы Q = 2n получим количество бит, требуемое для кодирования 1 символа пароля:
    • Q = 2n -> 
      62 = 2n ->
      n = 6
    • Поскольку в пароле 9 символов, то получим количество бит для хранения 1 пароля:
    • 6 * 9 = 54
    • Переведем в байты (т.к. по условию пароли хранятся в байтах):
    • 54 / 8 = 7 байт
    • На хранение дополнительных сведений выделено 18 байт. Получим количество байт для хранения всех сведений для одного пользователя:
    • 18 + 7 = 25 байт
    • По условию всего выделено 1 Кб для хранения сведений о всех пользователях. Переведем это значение в байты:
    • 1 Кб = 1024 байт
    • Получим возможное количество пользователей:
    • 1024 / 25 = 40,96
    • Отбросим дробную часть: 40

    📹 Видео


    старое Информатика ЕГЭ 12 задание разбор было

    12-е задание: «Сетевые адреса»
    Уровень сложности — базовый,
    Максимальный балл — 1,
    Примерное время выполнения — 2 минуты.

    Ip-адрес и доменное имя сайта: правила построения

    12_7: Решение задания 12 (Поляков К., вариант 17):

    На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило, что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты буквами А, Б, В и Г. Восстановите IP-адрес. В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответствующем IP-адресу.
    решение 12 задания егэ

    Ответ: ВГАБ

    Показать решение:

    • Вспомним правила построения IP-адреса.
    • Исключим фрагменты, которые не могут соответствовать началу IP-адреса: это фрагмент Б (с точки не может начинаться IP-адрес).
    • Исключим фрагменты, которые не могут соответствовать концу IP-адреса: это фрагмент В (отсутствие точки в начале, и, при этом, в остальных фрагментах нет таких, где в конце стояла бы точка (***.)).
    • Фрагмент А должен быть либо на последнем месте, либо после него должен находиться только Б (так как следом должна идти точка).
    • Фрагмент Б может находиться только в конце, так как последующий за ним фрагмент увеличит число до величины, большей 255, чего не может быть в IP-адресе (например, 322).
    • Переберем оставшиеся варианты, и найдем искомый IP-адрес:
    • ВГАБ: 222.222.222.32
      

    12_8: Решение задания 12 (Поляков К., вариант 7):

    На сервере school.edu находится файл rating.net, доступ к которому осуществляется по протоколу http. Фрагменты адреса данного файла закодированы буквами а, Ь, с… g (см. таблицу). Запишите последовательность этих букв, которая кодирует адрес указанного файла в Интернете.

    a .edu
    b school
    c .net
    d /
    e rating
    f http
    g ://

    Ответ: fgbadec

    Показать решение:

    fgbadec

    Определение адреса сети по IP-адресу и маске сети

    Решение задания 12 (Поляков К., вариант 25):

    В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.

     
    По заданным IP-адресу узла сети и маске определите адрес сети:

    IP-адрес: 145.92.137.88		Маска: 255.255.240.0
    

    При записи ответа выберите из приведенных в таблице чисел четыре элемента IP-адреса и запишите в нужном порядке соответствующие им буквы без точек.

    A B C D E F G H
    0 145 255 137 128 240 88 92

      
    Типовые задания для тренировки

    Ответ: BHEA

    Показать решение:

    • Для решения задания необходимо вспомнить, что IP-адрес сети так же как и маска сети хранятся в 4 байтах записанных через точку. То есть каждое из отдельных чисел IP-адреса и маски сети хранится в 8-разрядном двоичном виде. Для получения адреса сети необходимо выполнить поразрядную конъюнкцию этих чисел.
    • Так как число 255 в двоичном представлении — это 8 единиц, то при поразрядной конъюнкции с любым числом, в результате получится то же самое число. Таким образом, нет необходимости брать во внимание те байты IP-адреса, которые соответствуют числу 255 в маске сети. Поэтому первые два числа IP-адреса останутся такими же (145.92).
    • Остается рассмотреть числа 137 и 88 IP-дареса и 240 маски. Число 0 в маске соответствует восьми нулям в двоичном представлении, то есть поразрядная конъюнкция с любым числом превратит это число в 0.
    • Переведем оба числа ip-адреса и маски сети в двоичную систему и запишем IP-адрес и маску друг под другом, чтобы осуществить поразрядную конъюнкцию:
    • 137 : 10001001   88 :  1011000    -  IP-адрес
      240 : 11110000    0 : 00000000    -  маска сети
            10000000        00000000    -  результат поразрядной конъюнкции
      
    • Переведем результат в 10-ю систему счисления:
    • 100000002 = 12810
    • Итого, для адреса сети получаем байты:
    • 145.92.128.0
    • Ставим в соответствие буквы в таблице и получаем BHEA.

    📹 Видео


    Определение маски сети

    ЕГЭ по информатике 2017 задание 12 ФИПИ вариант 1 (Крылов С.С., Чуркина Т.Е.):

    В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, — в виде четырех байтов, причем каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда — нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

     
    Например, если IP-адрес узла равен 211.132.255.41, а маска равна 255.255.201.0, то адрес сети равен 211.132.201.0

    Для узла с IP-адресом 200.15.70.23 адрес сети равен 200.15.64.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
      
    Типовые задания для тренировки

    Ответ: 192

    Показать решение:

    • Третий байт слева соответствует числу 70 в IP-адресе и 64 — в адресе сети.
    • Адрес сети — это результат поразрядной конъюнкции маски и IP-адреса в двоичной системе:
    •  ? ? ? ? ? ? ? ? -> третий байт маски
      И (&)
       0 1 0 0 0 1 1 02 -> 7010
      =
       0 1 0 0 0 0 0 02 -> 6410
      
    • Наименьшим возможным результатом маски может быть:
    •  1 1 0 0 0 0 0 0 - третий байт маски
      И (&)
       0 1 0 0 0 1 1 02 -> 7010
      =
       0 1 0 0 0 0 0 02 -> 6410
      
    • Здесь самый старший бит взят за единицу, хотя для результата конъюнкции можно было взять ноль (0 & 0 = 0). Однако, так как следом стоит гарантированная единица, значит, в старший бит ставим тоже 1. Как известно, в маске сначала идут единицы, а потом нули (не может быть такого: 0100…, а может быть только так: 1100…).
    • Переведем 110000002 в 10-ю систему счисления и получим 192.

    📹 Видео


    12 задание. Демоверсия ЕГЭ 2018 информатика:

    В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули.
    Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

    Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
     
    Для узла с IP-адресом 57.179.208.27 адрес сети равен 57.179.192.0. Каково наибольшее возможное количество единиц в разрядах маски?
      
    Типовые задания для тренировки

    Ответ: 19

    Показать решение:

    • Поскольку адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске, то получим:
    •  255.255.?.?    -> маска
      &
       57.179.208.27  -> IP-адрес
      =
       57.179.192.0   -> адрес сети
      
    • Так как первые два байта слева в IP-адресе узла и адресе сети совпадают, значит, в маске для получения такого результата при поразрядной конъюнкции в двоичной системе должны быть все единицы. Т.е.:
    • 111111112 = 25510
    • Для того, чтобы найти оставшиеся два байта маски, необходимо перевести соответствующие байты в IP-адресе и адресе сети в 2-ю систему счисления. Сделаем это:
    • 20810 = 110100002
      19210 = 110000002
      
    • Теперь посмотрим, какая может быть маска для данного байта. Пронумеруем биты маски справа налево:
    •  7  6 5  4 3  2  1  0
       1 1 1 0 0 0 0 0   -> маска
      &
       1 1 0 1 0 0 0 0
      =
       1 1 0 0 0 0 0 0
      
    • Для 5-го бита получаем: ? & 0 = 0 -> в маске может находиться как единица, так и 0. Но так как по заданию у нас спрашивается наибольшее возможное количество единиц, то значит, необходимо сказать, что в маске данный бит равен 1.
    • Для 4-го бита получаем: ? & 1 = 0 -> в маске может находиться только 0.
    • Так как в маске сначала идут единицы, а затем все нули, то после этого нуля в 4-м бите все остальные будут нули. И 4-й слева байт маски будет равен 010.
    • Получим маску: 11111111.11111111.11100000.00000000.
    • Посчитаем количество единиц в маске:
    • 8 + 8 + 3 = 19

    📹 Видео


    12_9: Решение задания 12 (с сайта К. Полякова, вариант 139):

    Два узла, находящиеся в разных подсетях, имеют IP-адреса 132.46.175.26 и 132.46.170.130. В масках обеих подсетей одинаковое количество единиц. Укажите наименьшее возможное количество единиц в масках этих подсетей.

    Ответ: 22

    Показать решение:

    • В маске подсети сначала следуют единичные биты, которые соответствуют адресу подсети в IP-адресе компьютера. Так как адреса подсети двух компьютеров из условия задачи разные, но при этом количество единиц в их масках совпадает, то необходимо определить в IP-адресах компьютеров первый слева бит, который у них будет различен. Этот бит будет относиться к адресу подсети, а остальные биты, идущие справа от него, могут относиться уже к адресу компьютера.
    • Таким образом, найдем первый слева различный бит:
    • 175: 10101111
      170: 10101010
      
    • Получаем, что в маске подсети все биты, включая тот, что соответствует выделенным, будут равны единице. Отобразим это, переводя в двоичную систему счисления только интересующий нас байт. Выделим ту часть адресов, которая соответствует наименьшему возможному адресу подсети (соответственно, наименьшему количеству единиц в маске):
    • адрес 1: 132.46.10101111.26
      адрес 2: 132.46.10101010.130
      маска : 255.255.11111100.00000000
      
    • 255 для маски — это 8 единиц. Посчитаем общее количество единиц в маске (она одинакова для обеих компьютеров):
    • 8 + 8 + 6 = 22
      

    Количество различных значений маски

    Решение задания 12 (Краевая работа, Дальний Восток, 2018):

    Для узла с IP-адресом 93.138.161.94 адрес сети равен 93.138.160.0. Для скольких различных значений маски это возможно?
      
    Типовые задачи для тренировки

    Ответ: 5

    Показать решение:

    📹 Видео


    Определение номера компьютера

    Решение задания 12 (Поляков К., вариант 33):

    Если маска подсети 255.255.255.128 и IP-адрес компьютера в сети 122.191.12.189, то номер компьютера в сети равен _____.

    Типовые задания для тренировки

    Ответ: 61

    Показать решение:

    • Единичные биты маски (равные единице) определяют адрес подсети, т.к. адрес подсети — это результат поразрядной конъюнкции (логического умножения) битов маски с IP-адресом.
    • Остальная часть маски (начиная с первого нуля) определяет номер компьютера.
    • Поскольку в двоичном представлении число 255 — это восемь единиц (11111111), то при поразрядной конъюнкции с любым числом, возвращается то же самое число (1 ∧ 0 = 0; 1 ∧ 1 = 1). Таким образом, те байты в маске, которые равны числам 255, мы рассматривать не будем, т.к. они определяют адрес подсети.
    • Начнем рассмотрение с байта равного 128. Ему соответствует байт 189 IP-адреса. Переведем эти числа в двоичную систему счисления:
    • 128 = 100000002
      189 = 101111012
      
    • Те биты IP-адреса, которые соответствуют нулевым битам маски, служат для определения номера компьютера. Переведем получившееся двоичное число в десятичную систему счисления:
    • 01111012 = 6110
      

    📹 Видео


    Количество адресов компьютеров

    Решение задания 12 (Поляков К., вариант 41):

    В терминологии сетей TCP/IP маской подсети называется 32-разрядное двоичное число, определяющее, какие именно разряды IP-адреса компьютера являются общими для всей подсети — в этих разрядах маски стоит 1. Обычно маски записываются в виде четверки десятичных чисел — по тем же правилам, что и IP-адреса.

    Для некоторой подсети используется маска 255.255.255.192. Сколько различных адресов компьютеров теоретически допускает эта маска, если два адреса (адрес сети и широковещательный) не используют?
      
    Типовые задания для тренировки

    Ответ: 62

    Показать решение:

    • Единичные биты маски (равные единице) определяют адрес подсети, остальная часть маски (начиная с первого нуля) определяет номер компьютера. То есть для адреса компьютера существует столько вариантов, сколько можно получить из нулевых битов в маске.
    • В нашем случае первые слева три байта маски мы рассматривать не будем, т.к. число 255 в двоичном представлении — это восемь единиц (11111111).
    • Рассмотрим последний байт маски, равный 192. Переведем число в двоичную систему счисления:
    • 19210 = 110000002
      
    • Итого получили 6 нулей в маске сети. Значит, на адресацию компьютеров выделяется 6 бит или, другими словами, 26 адресов компьютеров. Но поскольку два адреса уже зарезервировано (по условию), то получим:
    • 26 - 2 = 64 - 2 = 62
      

    📹 Видео


    Информатика ЕГЭ 16 задание разбор

    16-е задание: «Вычисление рекуррентных выражений»
    Уровень сложности — повышенный,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 9 минут.
      
    Проверяемые элементы содержания: Вычисление рекуррентных выражений
    До ЕГЭ 2021 года — это было задание № 11 ЕГЭ

    Плейлист видеоразборов задания на YouTube:
    Задание демонстрационного варианта 2022 года ФИПИ


    Решение по рекуррентной формуле

    16_13: Решение задания 16 (Поляков К., вариант 40):

    Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:

    F(1) = 1; G(1) = 1;
    F(n) = F(n–1) + 3·G(n–1), при n >=2 
    G(n) = F(n–1) - 2·G(n–1), при n >=2
    

    Чему равна сумма цифр значения F(18)?

    Ответ: 46

    Показать решение:

    ✎ Решение с использованием программирования:
    PascalABC.NET:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    function F(n: integer): integer; forward;
    function G(n: integer): integer; forward;
     
    function F(n: integer): integer;
    begin
      if n = 1 then
        F := 1
      else if n >= 2 then
        F := F(n - 1) + 3 * G(n - 1)
    end;
     
    function G(n: integer): integer;
    begin
      if n = 1 then
        G := 1
      else if n >= 2 then
        G := F(n - 1) - 2 * G(n - 1)
    end;
     
    begin
      var res := F(18);
      var s := 0;
      while res > 0 do
      begin
        s := s + (res mod 10);
        res := res div 10;
      end;
      print(s)
    end.

    Питон:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    def F( n ):
        if n == 1: 
            return 1
        elif (n >= 2):
            return F(n-1)+3*G(n-1)
    def G( n ):
        if n == 1: 
            return 1
        elif (n >= 2):
            return F(n-1)-2*G(n-1)
     
    res = F(18)
    s = 0
    while res > 0:
        s += res%10
        res = res // 10
    print(s)

    C++:

    1
    
     

    Решение задания 16 (Поляков К., вариант 2):

    Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

    F(1) = 1
    F(n) = F(n–1) * (n + 2), при n > 1
    

    Чему равно значение функции F(5)? В ответе запишите только целое число.
      
    Типовые задания для тренировки

    Ответ: 840

    Показать решение:

    ✎ Решение с использованием программирования:
    PascalABC.NET:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    function F(n: integer): integer;
    begin
      if n = 1 then
        F := 1
      else if n > 1 then
        F := F(n - 1) * (n + 2)
    end;
     
    begin
      print(F(5))
    end.

    Питон:

    1
    2
    3
    4
    5
    6
    
    def F( n ):
        if n == 1: 
            return 1
        elif (n > 1):
            return F(n-1)*(n+2)
    print (F(5))

    C++:

    1
    
     

    ✎ Решение методом с конца к началу:

    • Из условия задания мы имеем рекуррентную формулу: F(n–1) * (n + 2) и условие остановки рекурсии: n > 1.
    • Поскольку рекуррентная формула уже задана, то остается подставить в нее начальный параметр — число 5:
    • F(5) = F(4) * 7
      
    • Теперь применим эту формулу для всех вызываемых вложенных функций, вплоть до F(1) (при котором «сработает» остановка рекурсии). Получим:
    • F(5) = F(4) * 7
             F(4) = F(3) * 6
                    F(3) = F(2) * 5
                           F(2) = F(1) * 4
                                    1
      
    • На F(2) необходимо остановиться, так как действует условие остановки рекурсии: формула работает для n > 1. Также учтем, что по условию F(1) = 1.
    • Теперь с конца к началу перепишем все получившиеся сомножители и перемножим их:
    • 1 * 4 * 5 * 6 * 7 = 840

    Решение задания 16 (Поляков К., вариант 7):

    Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

    F(0) = 1, F(1) = 1
    F(n) = 2 * F(n–1) + F(n-2), при n > 1
    

    Чему равно значение функции F(6)? В ответе запишите только целое число.

    Ответ: 99

    Показать решение:

    ✎ Решение 1. Метод решения с начала к концу:

    • Из условия задания мы имеем рекуррентную формулу: 2 * F(n–1) + F(n-2) и условие остановки рекурсии: n > 1.
    • Из заданной рекуррентной формулы видим, что функция зависит от предыдущей функции (F(n–1)) и от пред-предыдущей функции (F(n-2)).
    • Так как первые два значения заданы (F(0) = 1, F(1) = 1), то можно построить таблицу последующих значений, двигаясь к числу 6:
    • n 0 1 2 3 4 5 6
      F(n)
      2*F(n – 1)+F(n — 2)
      1 1 2*1+1 =3 2*3+1 =7 2*7+3 =17 2*17+7 =41 2*41+17 =99
    • Таким образом, получаем, что при вызове функции F(6) результатом будет число 99

    ✎ Решение 2. Метод решения с конца к началу:

    • Поскольку рекуррентная формула уже задана, то остается подставить в нее начальный параметр — число 6:
    • F(6) = 2*F(5) + F(4)
      
    • Теперь применим эту формулу для всех вызываемых вложенных функций, вплоть до F(2) (F(1) и F(0) известны из условия задачи). Получим:
    • F(6) = 2*F(5) + F(4)
             F(5) = 2*F(4) + F(3)
                    F(4) = 2*F(3) + F(2)
                           F(3) = 2*F(2) + F(1)
                                    F(2) = 2*F(1) + F(0) = 2*1+1 = 3
                                              1       1
      
    • Теперь с конца к началу перепишем все получившиеся значения функций:
    • F(6) = 2*F(5) + F(4) = 2*41 + 17 = 99
             F(5) = 2*F(4) + F(3) + 2*17+7 = 41 
                    F(4) = 2*F(3) + F(2) = 2*7+3 = 17 
                           F(3) = 2*F(2) + F(1) = 2*3+1 = 7 
                                    F(2) = 2*F(1) + F(0) = 2*1+1 = 3   
                                              1       1
      

    📹 Видео


    Решение задания 16 (Поляков К., вариант 24):

    Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:

    F(1) = 1; G(1) = 1;
    F(n) = F(n–1) – G(n–1), 
    G(n) = F(n–1) + 2*G(n–1), при n >= 2

    Чему равно значение величины F(5)/G(5)?
    В ответе запишите только целое число.

      
    Типовые задания для тренировки

    Ответ: -2

    Показать решение:

    • Решим задание с вызова функций F(5) и G(5). Будем получать формулы последовательно для F(5), F(4), …, F(1), G(5), G(4), …, G(1). Дойдя до известных значений F(1) = 1 и G(1) = 1, подставим их в полученные формулы:
    • F(5) = F(4) – G(4)
      G(5) = F(4) + 2*G(4)
      	F(4) = F(3) – G(3)  
      	G(4) = F(3) + 2*G(3) 
      		F(3) = F(2) – G(2) 
      		G(3) = F(2) + 2*G(2) 
      			F(2) = F(1) – G(1) 
      			G(2) = F(1) + 2*G(1) 
                                     F(1) = 1; G(1) = 1;
      
      F(2) = F(1) – G(1) = 1 - 1 = 0
      G(2) = F(1) + 2*G(1) = 1 + 2 = 3
      F(3) = F(2) – G(2) = 0 - 3 = -3
      G(3) = F(2) + 2*G(2) = 0 + 6 = 6
      F(4) = F(3) – G(3) = -3 - 6 = -9 
      G(4) = F(3) + 2*G(3) = -3 + 12 = 9
      F(5) = F(4) – G(4) = -9 - 9 = -18
      G(5) = F(4) + 2*G(4) = -9 + 18 = 9
      
    • Итого:
    • F(5)/G(5) = -18/9 = -2

    Что вернет функция. Сколько символов «звездочка». Какова сумма чисел

    16_9: ЕГЭ по информатике 2020 задание 1 (Самылкина Н.Н., Синицкая И.В., Соболева В.В., «Тематические тренировочные задания»):
      
    Что вернет функция F, если ее вызвать с аргументом 6?
     
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    
    function f(a:word):longword;
    begin
      if a>0 then
        f := f(a-1)*a;
      else
        f:=1;
    end;
    Бейсик:

    FUNCTION F(a)
      IF a > 0 THEN
         F = F(a - 1) * a
      ELSE
         F = 1;
      END IF
    END FUNCTION
    Python:

    def F(a):
        if a > 0:
            return F(a - 1) * a
        else:
            return 1
    С++:

    int F(int a);
    int F(int a) {
      if (a > 0)
        return F(a - 1) * a;
      else
        return 1;
    }

      

    Ответ: 720

    Показать решение:

      Рассмотрим алгоритм функции:

    • Если аргумент функции, т.е. a, равен единице, то функция возвращает в программу значение 1, иначе вызывается функция с аргументом a — 1 и результат этой функции умножается на a.
    • Это рекурсивный алгоритм вычисления факториала числа. Чтобы удостовериться в этом, выполним трассировку функции с аргументом = 6:
    • F(6):
      6 > 0, то F(5)*6
      F(5):
      5 > 0, то F(4)*5
      F(4):
      4 > 0, то F(3)*4
      F(3):
      3 > 0, то F(2)*3
      F(2):
      2 > 0, то F(1)*2
      F(1): 
      1 > 0, то F(0)*1
      F(0):
      0 > 0 - нет, то F(0) = 1
      
      Теперь подставляем значения, двигаясь вверх по прописанному алгоритму:
      F(1)= F(0)*1 = 1*1 = 1
      F(2)= F(1)*2 = 1*2 = 2
      F(3)= F(2)*3 = 2*3 = 6
      F(4)= F(3)*4 = 6*4 = 24
      F(5)= F(4)*5 = 24*5 = 120
      F(6)= F(5)*6 = 120*6 = 720
      
    • Т.е. 6! = 720

    ЕГЭ по информатике 2017 задание 16 (11) ФИПИ вариант 2 (Крылов С.С., Чуркина Т.Е.):
      
    Ниже записаны две рекурсивные функции (процедуры): F и G.
    Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(18)?
     
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    procedure F(n: integer); forward;
    procedure G(n: integer); forward;
     
    procedure F(n: integer);
    begin
      write('*');
      if n > 10 then F(n - 2) else G(n);
    end;
     
    procedure G(n: integer);
    begin
      write('**');
      if n > 0 then F(n - 3);
    end;
    Бейсик:

    DECLARE SUB F(n)
    DECLARE SUB G(n)
    SUB F(n)
      PRINT "*"
      IF n > 10 THEN
         F(n - 2)
      ELSE
         G(n)
      END IF
    END SUB
    SUB G(n)
      PRINT "**"
      IF n > 0 THEN
         F(n - 3)
      END IF
    END SUB
    Python:

    def F(n):
      print("*")
      if n > 10:
        F(n - 2)
      else:
        G(n)
    def G(n):
      print("**")
      if n > 0:
        F(n - 3)
    С++:

    void F(int n) {
      std::cout << "*";
      if (n > 10) {
        F(n - 2);
      }
      else {
        G(n);
      }
    }
    void G(int n) {
      std::cout << "**";
      if (n > 0)
        F(n - 3);
    }

      
    Типовые задания для тренировки

    Ответ: 19

    Показать решение:

    • Для удобства восприятия задания, выпишем рекуррентные формулы и условия остановки рекурсии для двух процедур:
    • Для F:
      *
      F(n - 2) при n > 10
      G(n) при n <= 10
      
      Для G:
      **
      F(n - 3) при n > 0
      

      ✎ Способ 1:

    • Выпишем последовательность вызовов процедур, начиная с указанного в задании F(18):
    • F(18) -> F(16) -> F(14) -> F(12) -> F(10) -> G(10) -> 
      F(7) -> G(7) -> F(4) -> G(4) -> F(1) -> G(1) -> F(-2) -> G(-2)
      
    • Обратим внимание, что независимо от условия процедура F выводит на экран одну *, а процедура G выводит две *. Посчитаем для последовательности вызовов итоговую сумму звездочек: 9F + 5G = 9*1 + 5*2 = 19
    • Результат: 19

      ✎ Способ 2:

    • Рассмотрим пошагово выполнение программы при вызове F(18):
    • 1 шаг: F(18)
             *    F(16)
      2 шаг:      *    F(14)
      3 шаг:           *    F(12)
      4 шаг:                *    F(10)
      5 шаг:                     *    G(10)
      6 шаг:                          **   F(7)
      7 шаг:                                *  G(7)
      8 шаг:                                   **  F(4)
      9 шаг:                                       *    G(4)
      10 шаг:                                           **   F(1)
      11 шаг:                                                *   G(1)
      12 шаг:                                                    **   F(-2)
      13 шаг:                                                         *   G(-2)
      14 шаг:                                                             **
      
    • Посчитаем количество звездочек: 19

    📹 Видео


    16_12: Решение задания 16 (Поляков К., вариант 31):
      
    Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(5)?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    procedure F(n: integer);
    begin
     writeln('*');
     if n > 0 then begin
       F(n-2);
       F(n div 2);
       F(n div 2);
     end
    end;
    Бейсик:

    DECLARE SUB F(n)
    SUB F(n)
      PRINT '*'
      IF n > 0 THEN
         F(n - 2)
         F(n \ 2)
         F(n \ 2)
      END IF
    END SUB
    Python:

    def F(n):
      print('*')
      if n > 0:    
        F(n-2)
        F(n // 2)
        F(n // 2)
    С++:

    void F(int n) {
      std::cout <<*;
      if (n > 0) {
        F(n - 2);
        F(n / 2);
        F(n / 2);
      }
    }

    Ответ: 34

    Показать решение:

    • В начале каждого вызова независимо от условия на экран выводится «звездочка». Кроме того, если условие n > 0 истинно, то функция вызывается еще три раза с разными аргументами. Таким образом, каждая функция выводит на экран либо одну звездочку (если условие ложно), либо 4 звездочки если условие истинно.
    • Схематично рассмотрим вызов каждой функции, начиная с функции F(5). Дойдя до F(0), для которой условие будет ложно, будем подставлять полученное количество «звездочек», двигаясь опять к F(5):
    • F(5) = одна '*', F(3), F(2), F(2)
      F(3) = одна '*', F(1), F(1), F(1)
      F(2) = одна '*', F(0), F(1), F(1)
      F(1) = одна '*', F(-1), F(0), F(0)
      F(0) = одна '*' = 1  (условие ложно)
      F(-1) = одна '*' = 1 (условие ложно)
      ---
      Движение обратно:
      F(1) = одна '*', F(-1), F(0), F(0) = 1 + 1 + 1 + 1 = 4 '*'
      F(2) = одна '*', F(0), F(1), F(1) = 1 + 1 + 4 + 4 = 10 '*'
      F(3) = одна '*', F(1), F(1), F(1) = 1 + 4 + 4 + 4 = 13 '*'
      F(5) = одна '*', F(3), F(2), F(2) = 1 + 13 + 10 + 10 = 34 '*' 
      

    ЕГЭ по информатике «Типовые экзаменационные варианты» 2019, ФИПИ, ВАРИАНТ 10 (Крылов С.С., Чуркина Т.Е.):
      
    Ниже записаны две рекурсивные функции (процедуры): F и G.
    Какова сумма чисел, напечатанных на экране при выполнении вызова F(17)?
     
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    procedure F(n: integer); forward;
    procedure G(n: integer); forward;
     
    procedure F(n: integer);
    begin
      writeln(n);
      if n mod 2  =0 then F(n div 2) 
      else G((n - 1) div 2);
    end;
     
    procedure G(n: integer);
    begin
      writeln (n); 
      if n > 0 then F(n);
    end;
    Бейсик:

    DECLARE SUB F(n)
    DECLARE SUB G(n)
    SUB F(n)
      PRINT n
      IF n MOD 2 = 0 THEN
         F(n \ 2)
      ELSE
         G ( (n - 1) \ 2)
      END IF
    END SUB
    SUB G(n)
      PRINT n
      IF n > 0 THEN
         F(n)
      END IF
    END SUB
    Python:

    def F(n):
      print(n)
      if n % 2 == 0:
        F(n // 2)
      else:
        G((n - 1) // 2)
    def G(n):
      print(n)
      if n > 0:
        F(n)
    С++:

    void F(int n) {
      std::cout << n << endl;
      if (n % 2 == 0) {
        F(n / 2);
      }
      else {
        G((n - 1) / 2) ;
      }
    }
    void G(int n) {
      std::cout << n << endl;
      if (n > 0)
        F(n);
    }

      
    Типовые задания для тренировки

      
    Ответ: 40

    Показать решение:

    • Для удобства восприятия задания, выпишем рекуррентные формулы и условия остановки рекурсии для двух процедур:
    • Для F:
      n
      F(n div 2) при n - четное (n mod 2 = 0)
      G((n - 1) div 2) при n - нечетное
      
      Для G:
      n
      F(n) при n > 0
      
    • Выпишем последовательность вызовов процедур, начиная с указанного в задании F(17).
    • Обратим внимание, что независимо от условия как процедура F выводит на экран n, так и процедура G выводит n.
    • F(17) -> n - нечетное, G(8) вывод 17
      G(8) -> F(8)                вывод 8
      F(8) -> n - четное, F(4)    вывод 8
      F(4) -> n - четное, F(2)    вывод 4 
      F(2) -> n - четное, F(1)    вывод 2
      F(1) -> n - нечетное, G(0)  вывод 1
      G(0)                        вывод 0
      
    • Сумма:
    • 17 + 8 + 8 + 4 + 2 + 1 + 0 = 40

    Источник: Поляков К, ВАРИАНТ 77
      
    Ниже записаны две рекурсивные функции (процедуры): F и G.
    Чему будет равно значение, вычисленное при выполнении вызова F(6)?
     
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    function F(n: integer):integer; forward;
    function G(n: integer):integer; forward;
    function F(n:integer):integer;
    begin
     if (n > 2) then
     F:= F(n - 1) + G(n - 2)
     else F:= n;
    end;
    function G(n:integer):integer;
    begin
     if (n > 2)then
     G:= G(n - 1) + F(n -2)
     else G:= n+1;
    end;
    Бейсик:

    FUNCTION F(n)
      IF n > 2 THEN
         F = F(n - 1) + G(n - 2)
      ELSE
         F = n;
      END IF
    END FUNCTION 
    FUNCTION G(n)
      IF n > 2 THEN
         G = G(n - 1) + F(n -2)
      ELSE
         G = n+1;
      END IF
    END FUNCTION
    Python:

    def F(n):
        if n > 2:
            return F(n - 1) + G(n - 2)
        else:
            return n
    def G(n):
        if n > 2:
            return G(n - 1) + F(n - 2)
        else:
            return n+1
    С++:

    int F(int n);
    int G(int n);
    int F(int n) {
      if (n > 2)
        return F(n - 1) + G(n - 2);
      else
        return n;
    }
    int G(int n) {
      if (n > 2)
        return G(n - 1) + F(n - 2);
      else
        return n + 1;
    }

      
    Типовые задания для тренировки

    Ответ: 17

    Показать решение:

      Результат: 17

    📹 Видео


    Все числа, которые будут напечатаны на экране, в том же порядке

    16 (11) задание. Демоверсия ЕГЭ 2018 информатика:

    Ниже на пяти языках программирования записан рекурсивный алгоритм F.
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    procedure F(n: integer);
    begin
    if n > 0 then
    begin
      write(n);
      F(n - 3);
      F(n div 3)
    end
    end;
    Бейсик:

    SUB F(n)
      IF n > 0 THEN
         PRINT n
         F(n - 3)
         F(n \ 3)
      END IF
    END SUB
    Python:

    def F(n):
      if n > 0:
         print(n)
         F(n - 3)
         F(n // 3)
    С++:

    void F(int n){
      if (n > 0){
        std::cout <<n;
        F(n - 3);
        F(n / 3);
      }
    }

    Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

    Похожие задания для тренировки

    Ответ: 9631231

    Показать решение:

      Рассмотрим алгоритм:

    • В данном фрагменте программы рекурсивная процедура вызывает саму себя дважды.
    • Благодаря условию, находящемуся в процедуре (if n > 0 — условие остановки рекурсии), обеспечивается выход из рекурсии и не происходит «зацикливания».
    • Выполнение процедур закончится, когда в каждой из вызванных процедур выполнятся по две внутренние процедуры, и условие if n > 0 перестанет работать (т.е. когда параметр процедуры n станет <= 0).
    • div — целочисленное деление, т.е., например:
    • 5 div 2 = 2
      1 div 2 = 0
      
    • Отобразим пошагово выполнение каждой процедуры, двигаясь сверху вниз и оставляя отступы слева с каждым новым шагом. В каждой строке будем отображать порядковый номер шага. Под вызовом каждой процедуры разместим именно те действия, которые происходят в данной процедуре:
    •    F(9)
      1: 9  F(6)    (9 - 3 = 6)
      2:     6   F(3)    (6 - 3 = 3)
      3:          3    F(0)    (3 - 3 = 0, условие не работает)
      4:         F(1)  (3 div 3 = 1)
      5:          1    F(-2)    (1 - 3 = -2, условие не работает)
      6:         F(0)    (1 div 3 = 0, условие не работает)
      7:    F(2) (6 div 3 = 2)
      8:     2   F(-1)    (2 - 3 = -1, условие не работает)
      9:    F(0)    (2 div 3 = 0, условие не работает)
      10:F(3)  (9 div 3 = 3)
      11:3  F(0)     (3 - 3 = 0, условие не работает) 
      12:F(1)  (3 div 3 = 1)   
      13: 1   F(-2)     (1 - 3 = -2, условие не работает) 
      
    • Выделены те числа, которые выводятся на экран. Подчеркнуты те процедуры, в которых условие не работает, соответственно, ничего на экран не выводится.
    • Перепишем по порядку все выводимые на экран числа сверху вниз: 9631231

    📹 Видео 1 способ:
    📹 Видео 2 способ:


    Разбор задания 16 (11) Информатика и ИКТ 2019 3 вариант (Крылов С.С, Чуркина Т.Е., 10 вариантов):

    Ниже записан рекурсивный алгоритм F. Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(130).
    Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
      
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    procedure F(n: integer);
    begin
      if n > 1 then
      begin
        write(n);
        F(n div 10);
        F(n - 40)
       end
    end;
    Бейсик:

    SUB F(n)
      IF n > 1 THEN
         PRINT n
         F(n \ 10)
         F(n - 40)
      END IF
    END SUB
    Python:

    def F(n):
      if n > 1:
         print(n)
         F(n // 10)
         F(n - 40)
    С++:

    void F(int n){
      if (n > 1){
        std::cout <<n;
        F(n / 10);
        F(n - 40);
      }
    }

    Ответ: 1301390950510

    Показать решение:

      Разберем алгоритм программы:

    • В данном фрагменте программы рекурсивная процедура F вызывает саму себя дважды.
    • В процедуре находится условие if n > 1 — условие остановки рекурсии, благодаря которому обеспечивается выход из рекурсии и не происходит «зацикливания».
    • Выполнение фрагмента программы закончится, когда в каждой из вызванных процедур выполнятся по две внутренние процедуры, и условие if n > 1 перестанет работать (т.е. когда параметр процедуры n станет <= 1).
    • div — целочисленное деление, т.е., например:
    • 5 div 3 = 1
      1 div 3 = 0
      
    • Выполним трассировку кода процедуры: двигаться будем пошагово сверху вниз, оставляя отступы слева с каждым новым шагом. В каждой строке будем отображать порядковый номер шага. Под вызовом каждой процедуры разместим именно те действия, которые происходят в данной процедуре:
    •    F(130) 130  
      1: ➥  F(13) (130 div 10 = 13) 13
      2:           ➥ F(1) условие не работает! 1 ≤ 0
      3:           ➥ F(-27) условие не работает! -27 ≤ 0
      4: ➥  F(90) (130 - 40 = 90) 90        
      5:           ➥ F(9) (90 div 10 = 9) 9
      6:                    ➥ F(0) условие не работает! 0 ≤ 0
      7:                    ➥ F(-31) условие не работает! -31 ≤ 0
      8:           ➥  F(50) (90 - 40 = 50) 50
      9:                     ➥  F(5) (50 div 10 = 5) 5
      10:                              ➥ F(0) условие не работает! 0 ≤ 0
      11:                              ➥ F(-35) условие не работает! -35 ≤ 0
      12:                    ➥  F(10) (50 - 40 = 10) 10
      13:                              ➥ F(1) условие не работает! 1 ≤ 0
      14:                              ➥ F(-30) условие не работает! -30 ≤ 0
      
    • Выделены красным цветом те числа, которые выводятся на экран. Подчеркнуты те процедуры, в которых условие не работает, соответственно, ничего на экран не выводится.
    • Перепишем сверху вниз все выводимые на экран числа: 1301390950510

    Результат: 1301390950510

    📹 Видео


    16_11: Решение задания 16 (Поляков К., вариант 135):
      
    Определите, что выведет на экран программа при вызове F(5).
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    procedure F(n: integer); forward;
    procedure G(n: integer); forward;
    procedure F(n: integer);
    begin
      if n > 2 then
       begin
        write(n);
        F(n - 1);
        G(n - 2);
       end
      else
        write(n+2);
    end;
    procedure G(n: integer);
    begin
      write(n);
      if n > 2 then
       begin
        G(n - 1);
        F(n - 2);
       end;
    end;
    Бейсик:

    DECLARE SUB F(n)
    DECLARE SUB G(n)
    SUB F(n)
      IF n > 2 THEN
         PRINT n
         F(n - 1)
         G(n - 2)
      ELSE
         PRINT n+2
      END IF
    END SUB
    SUB G(n)
      PRINT n
      IF n > 2 THEN
         G(n - 1)
         F(n - 2)
      END IF
    END SUB
    Python:

    def F(n):
        if n > 2:
            print(n, end='')
            F(n - 1)
            G(n - 2)
        else:
            print(n+2, end='')
     
    def G(n):
        print(n, end='')
        if n > 2:
            G(n - 1)
            F(n - 2)
    С++:

    void G(int n);
    void F(int n) {
    	if (n > 2) {
    	  std::cout << n;
    	  F(n - 1);
    	  G(n - 2);		
    	  }
    	else
    	  std::cout << n+2;
    }
    void G(int n) {
    	std::cout << n;
    	if (n > 2) {
    	  G(n - 1);
    	  F(n - 2);
    	  } 
    }

      
    Типовые задания для тренировки

    Ответ: 543412323

    Показать решение:

    • При истинности условия функция F также, как и функция G «запускает» еще две функции: функция F: 1)F(n — 1) и 2)G(n — 2), а функция G: 1)G(n — 1) и 2)F(n — 2).
    • Рассмотрим последовательно алгоритм работы функций, нумеруя вызовы функций. Для удобства будем делать отступы для каждой функции. Таким образом, для вызова каждой функции должно быть два внутренних вызова:
    • F(5) = 5 (на экране)
      1) F(n - 1), т.е. F(4)
          F(4) = 4(на экране)
          1) F(n - 1), т.е. F(3)
                 F(3) = 3(на экране)
                 1) F(n - 1), т.е. F(2)
                        F(2) = n + 2 = 4 (на экране) (блок else)
                 2) G(n - 2), т.е. G(1)
         	          G(1) = 1 (на экране)
          2) G(n - 2), т.е. G(2)
      	   G(2) = 2 (на экране)
      2) G(n - 2), т.е. G(3)
          G(3) = 3 (на экране)
          1)G(n - 1), т.е. G(2)
                 G(2) = 2 (на экране)
          2) F(n - 2), т.е. F(1)
                 F(1) = n + 2 = 3 (на экране) (блок else)
      
    • Перепишем сверху вниз все цифры, выведенные на экран:
    • 543412323

    Решение задания 16 (Поляков К., вариант 78):

    Вызов представленной ниже рекурсивной функции приводит к появлению на экране чисел и точек. С каким минимальным натуральным аргументом а нужно вызвать эту функцию, чтобы в результате на экране появилось 5 точек (не обязательно подряд, между точками могут встречаться числа)?
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    function gz(a:integer):integer;
    var p:integer;
    begin
      if a<1 then begin 
       gz:=1; exit; 
      end;
      if a mod 3=0 then begin
       write('...');
       p:=gz(a div 3)+gz(a div 4);
      end
      else begin
        write('.');
        p:=gz(a div 4);
      end;
      write(p);
      gz:=2; 
    end;

    Ответ: 6

    Показать решение:

      Результат: 6

    📹 Видео


    Информатика ЕГЭ 8 задание разбор

    Решение 8 задания

    8-е задание: «Измерение количества информации»
    Уровень сложности — базовый,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 4 минуты.
      
    Проверяемые элементы содержания: Знание о методах измерения количества информации
    До ЕГЭ 2021 года — это было задание № 10 ЕГЭ

    Плейлист видеоразборов задания на YouTube:
    Задание демонстрационного варианта 2022 года ФИПИ


    Сколько вариантов шифра или кодовых слов

    ЕГЭ по информатике 2017 задание 8 (10) ФИПИ вариант 1 (Крылов С.С., Чуркина Т.Е.):

    Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является цифрой от 1 до 6.

    Сколько различных вариантов шифра можно задать, если известно, что цифра 1 должна встречаться в коде ровно 1 раз, а каждая из других допустимых цифр может встречаться в шифре любое количество раз или не встречаться совсем?

    Типовые задания для тренировки

    Ответ: 3125

    Показать решение:

      ✎ Решение теоретическое:

    • Формула нахождения количества различных сообщений:
    • Q = NL
    • Итак, что у нас дано из этой формулы:
    • Длина сообщения (L) = 5 символов
    • Мощность алфавита (N) = 6 (цифры от 1 до 6).
    • Но так как цифра 1 встречается по условию ровно один раз, а остальные 5 цифр — любое количество раз, то будем считать, что N = 5 (цифры от 2 до 6, исключая 1).
      Найдем количество вариантов для одного случая, а именно: когда единица стоит на первом месте, а остальные 5 цифр размещаем на четыре позиции:
    • 1 5 5 5 5 - 1 * Q = 54 = 625
      

        
      Найдем количество вариантов двумя разными способами (можно выбрать любой из них):
      ✎ 1 способ. Найдем количество вариантов методом перебора:

    • Методом перебора найдем количество вариантов размещения:
    • 1 5 5 5 5 - 1 * Q=54 = 625
      5 1 5 5 5 - 1 * Q=54 = 625
      5 5 1 5 5 - 1 * Q=54 = 625
      5 5 5 1 5 - 1 * Q=54 = 625
      5 5 5 5 1 - 1 * Q=54 = 625
      
    • получили 5 вариантов;
    • ✎ 2 способ. Найдем количество вариантов при помощи формулы комбинаторики:

      \[ C{\binom{4}{5}}= \frac{5!}{4!(5-4)!} = 5 \]

    • получили 5 вариантов, так же как и в первом способе;
    • В итоге получили 625 вариантов на каждый из пяти случаев, т.е.:
    • 625 * 5 = 3125
      

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    begin
      var n := 0;
      var str := '123456';
      foreach var s1 in str do
        foreach var s2 in str do
          foreach var s3 in str do
            foreach var s4 in str do
              foreach var s5 in str do
              begin
                if (s1 + s2 + s3 + s4 + s5).CountOf('1') = 1 then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='123456'.Cartesian(5) 
    .where(w->w.countOf('1')=1)// кол-во '1' в слове
    .count.print
    Cartesian(5) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 5-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    n=0
    str='123456'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
            for s5 in str:
              if (s1+s2+s3+s4+s5).count('1')==1:
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    ЕГЭ по информатике 2017 задание 8 (10) ФИПИ вариант 10 (Крылов С.С., Чуркина Т.Е.):

    Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является либо буквой (A или B) или цифрой (1, 2 или 3).

    Сколько различных вариантов шифра можно задать, если известно, что в коде присутствует ровно одна буква, а все другие символы являются цифрами?

    Ответ: 810

    Показать решение:

      ✎ Решение теоретическое:

    • Формула нахождения количества различных сообщений:
    • Q = NL
    • Посчитаем количество возможных шифров для одного из вариантов (например, когда буквы находятся на первой позиции). Так как цифры (1, 2, 3) могут занимать 4 позиции из пяти, а две буквы (А и В) одну из позиций, значит:
    • Q = 2 * 34 = 162
      
    • Имеем 162 вариантов шифра для слова, в котором буквы могут стоять на первой позиции:
    • AB  123 123 123 123 = 162
    • Получим все варианты размещения:
    • "2" означает одна из двух букв: А или B, "3" - одна из трех цифр:
      
      2 3 3 3 3 -> Q = 2 * 34 = 162
      3 2 3 3 3 -> Q = 2 * 34 = 162
      3 3 2 3 3 -> Q = 2 * 34 = 162
      3 3 3 2 3 -> Q = 2 * 34 = 162
      3 3 3 3 2 -> Q = 2 * 34 = 162
      
    • Получили 5 вариантов с размещением букв А и B.
    • Осталось умножить:
    • 5 * 162 = 810
      

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    begin
      var n := 0;
      var str := 'AB123';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5];
                if (res.CountOf('A') = 1) and (res.CountOf('B') = 0) 
                or (res.CountOf('B') = 1) and (res.CountOf('A') = 0) then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='АВ123'.Cartesian(5) 
    .where(w->w.count(letter -> letter in 'АВ')=1)// кол-во букв в слове
    .count.print
    Cartesian(5) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 5-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    n=0
    str='AB123'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
            for s5 in str:
              if ((s1+s2+s3+s4+s5).count('A')==1 and (s1+s2+s3+s4+s5).count('B')==0) 
              or ((s1+s2+s3+s4+s5).count('B')==1 and (s1+s2+s3+s4+s5).count('A')==0):
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 (10) задания ЕГЭ по информатике (К. Поляков, задание 69):

    Олег составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Олег использует 4-буквенные слова, в которых есть только буквы A, Б, В, Г, Д и Е, причём буква Г появляется ровно 1 раз и только на первом или последнем месте. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.

    Сколько различных кодовых слов может использовать Олег?

    Ответ: 250

    Показать решение:

      ✎ Решение теоретическое:

    • Вспомним формулу получения количества возможных вариантов слов:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы, n2 — количество вариантов выбора второй буквы и т.п.
    • Рассмотрим варианты, когда буква Г встречается на первом или последнем месте:
    • Г ? ? ? = 1 * 5 * 5 * 5 = 53 = 125 
      ? ? ? Г = 5 * 5 * 5 * 1 = 53 = 125
      
    • Вместо знаков ? может стоять одна из пяти букв (А, Б, В, Д, Е), т.к. буква Г там стоять не может
    • Теперь суммируем количество найденных вариантов:
    • 125 + 125 = 250

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    begin
      var n := 0;
      var str := 'АБВГДЕ';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4];
                if (res[1]='Г') and (res[2]<>'Г') and (res[3]<>'Г') and (res[4]<>'Г')
                or (res[1]<>'Г') and (res[2]<>'Г') and (res[3]<>'Г') and (res[4]='Г') then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='АБВГДЕ'.Cartesian(4)
    .where(w->(w.countOf('Г')=1)and(w[1]<>'Г')and(w[2]<>'Г')and(w[2]<>'Г'))
    .count.print
    Cartesian(4) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 4-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    n=0
    str='АБВГДЕ'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
            if (s1 =='Г') and (s2!='Г') and (s3!='Г') and (s4!='Г') 
            or (s1 !='Г') and (s2!='Г') and (s3!='Г') and (s4=='Г'):
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    ЕГЭ по информатике 2017 задание 8 (10) ФИПИ вариант 5 (Крылов С.С., Чуркина Т.Е.):

    Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является одной из букв X, Y или Z.

    Сколько различных вариантов шифра можно задать, если известно, что буква X должна встречаться в коде ровно 2 раза, а каждая из других допустимых букв может встречаться в шифре любое количество раз или не встречаться совсем?
      
    Типовые задания для тренировки

    Ответ: 80

    Показать решение:

      ✎ Решение теоретическое:

    • Формула нахождения количества различных сообщений:
    • Q = NL
    • Итак, что у нас дано из этой формулы:
    • Начальная мощность алфавита (N) = 3 (буквы X, Y, Z). Но так как буква X встречается ровно два раза, то мы ее рассмотрим отдельно, а остальные 2 буквы — встречаются любое количество раз, значит, будем считать, что:
    • N = 3 - 1 = 2 (Y и Z)
    • Исходя из предыдущего пункта, длина сообщения тоже сократится:
    • (L) = 5 - 2 = 3 символа (остальные два символа отведем на размещение X)
    • Количество различных сообщений (вариантов шифра) = Q = ?
    • Т.е. для одного варианта размещения (для одного варианта шифра) имеем:
    • X X ? ? ? -> 12 * Q = 23 = 8
      
    • Согласно условию получим следующие варианты размещения:
    • ✎1 способ. Перебор всех вариантов:

      X X ? ? ? - 12 * Q = 23 = 8
      X ? X ? ? - 12 * Q = 23 = 8
      X ? ? X ? - 12 * Q = 23 = 8
      X ? ? ? X - 12 * Q = 23 = 8
      ? X X ? ? - 12 * Q = 23 = 8
      ? X ? X ? - 12 * Q = 23 = 8
      ? X ? ? X - 12 * Q = 23 = 8
      ? ? X X ? - 12 * Q = 23 = 8
      ? ? X ? X - 12 * Q = 23 = 8
      ? ? ? X X - 12 * Q = 23 = 8
      

      ✎ 2 способ. При помощи формулы поиска числа сочетаний:

      \[ C{\binom{k}{n}}= \frac{n!}{k!(n-k)!} \]

      Число сочетаний из n элементов по k элементов:

      \[ C{\binom{2}{5}}= \frac{5!}{2!(5-2)!} = \frac{120}{12} = 10 \]

      * Факториал числа: n! = 0 * 1 * 2 * 3 * .. * n

    • Количество вариантов найдено верно, т.к. результат обоих способов = 10. В итоге получаем:
    • 8 * 10 = 80
      

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    begin
      var n := 0;
      var str := 'xyz';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5];
                if res.countOf('x') = 2 then // или if res.Count(y -> y = 'x') = 2 then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='XYZ'.Cartesian(5)
    .where(w->w.countOf('X')=2)
    .count.print
    Cartesian(5) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 5-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    n=0
    str='xyz'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
            for s5 in str:
              if (s1+s2+s3+s4+s5).count('x') == 2:
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 (10) задания Тренировочный вариант №1 2018 (от 03.09.2018):

    Сколько слов длины 5, начинающихся с согласной буквы и заканчивающихся гласной буквой, можно составить из букв ОСЕНЬ? Каждая буква может входить в слово несколько раз. Слова не обязательно должны быть осмысленными словами русского языка.
      
    Типовые задания для тренировки

    Ответ: 500

    Показать решение:

      ✎ Решение теоретическое:

    • Из букв слова ОСЕНЬ имеем 2 гласных буквы (О, Е) и 2 согласных буквы (С, Н). Буква мягкий знак «нейтральна».
    • Подсчитаем количество букв на каждой из 5 позиций:
    • 2   5   5   5   2
      СН   все  все  все   ОЕ
      
    • Вспомним формулу получения количества возможных вариантов слов:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы, n2 — количество вариантов выбора второй буквы и т.п.
    • Т.е. количество вариантов равно произведению полученных чисел:
    • N = 2 * 5 * 5 * 5 * 2 = 500
      

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    begin
      var n := 0;
      var str := 'ОСЕНЬ';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5];
                if ((res[1] = 'С') or (res[1] = 'Н')) and ((res[5] = 'О') or (res[5] = 'Е')) then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    
    'ОСЕНЬ'.Cartesian(5).Where(w->w[0] in 'СН').Where(w->w[4] in 'ОЕ').Count.Print
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    str = 'ОСЕНЬ'
    n = 0
    for s1 in str:
        for s2 in str: 
            for s3 in str:
                for s4 in str:
                    for s5 in str:
                        res = s1 + s2 + s3 + s4
                        if (s1 == 'С' or s1 == 'Н') and (s5 == 'О' or s5 == 'Е'):
                            n += 1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 задания ЕГЭ по информатике (К. Поляков, задание 42):

    Вася составляет 4-буквенные слова, в которых есть только буквы Л, Е, Т, О, причём буква Е используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем.

    Сколько существует таких слов, которые может написать Вася?
      
    Типовые задания для тренировки

    Ответ: 175

    Показать решение:

      ✎ Решение теоретическое:
      ✎ 1 способ:

    • Количество вариантов различных слов вычислим по формуле:
    • N = n1 * n2 * n3 * …
      где

    • n1 — количество вариантов выбора первой буквы и т.п.
    • Рассмотрим все варианты расположения буквы Е:
    • 1. Е ? ? ? или 
      2. ? Е ? ? или 
      3. ? ? Е ? или
      4. ? ? ? Е 
      
      Где вопросительный знак означает любую букву из Л, Е, Т, О.
      
    • Подсчитаем по формуле количество слов для варианта 1:
    • Е ? ? ? = 1 * 4 * 4 * 4 = 64
      
      т.е. на первой позиции - только 1 буква - Е, на каждой последующей - одна из четырех букв Л, Е, Т, О.
      
    • Подсчитаем по формуле количество слов для варианта 2; учтем, что на первой позиции букву Е мы уже посчитали для первого варианта!:
    • ? Е ? ? = 3 * 1 * 4 * 4 = 48
    • Подсчитаем по формуле количество слов для варианта 3; учтем, что на первой и второй позициях букву Е мы уже посчитали в предыдущих вариантах!:
    • ? ? Е ? = 3 * 3 * 1 * 4 = 36
    • Подсчитаем по формуле количество слов для варианта 4; учтем, что на первой, второй и третьей позициях букву Е мы уже посчитали в предыдущих вариантах:
    • ? ? ? Е = 3 * 3 * 3 * 1 = 27
    • Поскольку у нас каждый вариант связан операцией логическое ИЛИ, то теперь суммируем все варианты:
    • 64 + 48 + 36 + 27 = 175

    Результат: 175
    ✎ 2 способ:

    • Так как по условию буква Е встретится хотя бы 1 раз, значит, можно утверждать, что не может быть такого, чтобы буква Е не встретилась бы ни одного раза.
    • Таким образом, рассчитаем случай, когда буква Е встречается все 4 раза (т.е. все случаи) и отнимем от результата невозможный случай: когда буква Е не встретится ни одного раза:
    • 1. Буква Е используется 4 раза (т.е. на всех позициях):
      4 * 4 * 4 * 4 = 256
      
      2. Буква Е не используется совсем (т.е. только 3 буквы):
      3 * 3 * 3 * 3 = 81
      
    • Вычтем из первого варианта невозможный вариант № 2:
    • 256 - 81 = 175
      

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    begin
      var n := 0;
      var str := 'ЛЕТО';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4];
                if res.countOf('Е') >= 1 then // или if res.Count(y -> y = 'Е') >= 1 then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    ##
    var d:='лето'.Cartesian(4).where(w->w.countOf('е')>=1).count.print
    Cartesian(4) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 4-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    n=0
    str='ЛЕТО'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
              if (s1+s2+s3+s4).count('Е') >= 1:
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 задания ЕГЭ по информатике (К. Поляков, задание 50):

    Вася составляет 4-буквенные слова, в которых есть только буквы К, А, Т, Е, Р, причём буква Р используется в каждом слове хотя бы 2 раза. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем.

    Сколько существует таких слов, которые может написать Вася?
      
    Типовые задания для тренировки

    Ответ: 113

    Показать решение:

      ✎ Решение теоретическое:

    • Количество возможных вариантов слов вычислим по формуле:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы, n2 — количество вариантов выбора второй буквы и т.п.
    • Сначала по формуле получим все варианты для всех пяти букв, включая букву Р:
    • 5 * 5 * 5 * 5 = 54 = 625
    • Из общего количества вариантов нам необходимо исключить те варианты, где Р не встречается вообще и Р встречается только 1 раз. Найдем их последовательно:
    • 1. Буква Р не встречается совсем:
    • 4 * 4 * 4 * 4 = 44 = 256
    • 2. Буква Р встречается только один раз:
    • р ? ? ? = 1 * 4 * 4 * 4 = 43
      ? р ? ? = 4 * 1 * 4 * 4 = 43
      ? ? р ? = 4 * 4 * 1 * 4 = 43
      ? ? ? р = 4 * 4 * 4 * 1 = 43
      
      Получим  43 * 4 = 256
      
    • Теперь вычтем из общего количества найденные варианты (№ 1 и № 2):
    • 625 - 256 - 256 = 113

    ✎ Решение с использованием программирования:

    PascalABC.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    begin
      var n := 0;
      var str := 'КАТЕР';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4];
                if res.CountOf('Р') >= 2 then
                  n += 1;
              end;
      print(n)
    end.
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    n=0
    str='КАТЕР'
    for s1 in str:
      for s2 in str:
        for s3 in str:
          for s4 in str:
              if (s1+s2+s3+s4).count('Р') >= 2:
                n+=1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 задания ЕГЭ по информатике (К. Поляков, задание 70):

    Олег составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Олег использует 5-буквенные слова, в которых есть только буквы A, Б, В, и Г, причём буква Г появляется не более одного раза и только на последнем месте. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.

    Сколько различных кодовых слов может использовать Олег?

    Ответ: 324

    Показать решение:

      ✎ Решение теоретическое:

    • Вспомним формулу получения количества возможных вариантов слов:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы,
    • n2 — количество вариантов выбора второй буквы и т.п.
    • Так как буква Г появляется не более одного раза и только на последнем месте, значит, она может либо появиться 1 раз на последнем месте, либо не появиться совсем.
    • Рассмотрим варианты, когда буква Г встречается 1 раз на последнем месте и встречается 0 раз:
    • 1 раз: ? ? ? ? Г = 3 * 3 * 3 * 3 * 1 = 34 = 81 
      0 раз: ? ? ? ? ? = 3 * 3 * 3 * 3 * 3 = 35 = 243
      
    • Вместо знаков ? может стоять одна из трех букв (А, Б, В), т.к. буква Г там стоять не может
    • Теперь суммируем количество найденных вариантов:
    • 81 + 243 = 324

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    begin
      var n := 0;
      var str := 'АБВГ';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4]+ str[s5];
                if (res[1]<>'Г') and (res[2]<>'Г')and (res[3]<>'Г') and (res[4]<>'Г') then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='абвг'.Cartesian(5)
    .where(w->(w.countOf('г')<=1)and(w[0]<>'г')and(w[1]<>'г')and(w[2]<>'г')
         and(w[3]<>'г')).count.print
    Cartesian(5) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 5-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    Разбор 8 задания ЕГЭ по информатике (К. Поляков, задание 52):

    Вася составляет 4-буквенные слова, в которых есть только буквы К, О, М, А, Р, причём буква А используется в них не более 3-х раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, необязательно осмысленная.

    Сколько существует таких слов, которые может написать Вася?
      
    Типовые задачи для тренировки

    Ответ: 624

    Показать решение:

      ✎ Решение теоретическое:

    • Вспомним формулу получения количества возможных вариантов слов:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы,
    • n2 — количество вариантов выбора второй буквы и т.п.
    • Так как буква А по условию используется не более 3-х раз, это значит, что она используется либо 3 раза, либо 2 раза, либо 1 раз, либо не используется совсем. Рассмотрим все эти варианты отдельно.
    • 1. Буква А используется 3 раза:
    • А А А _  -> 1 * 1 * 1 * 4 = 4
      А А _ А  -> 1 * 1 * 4 * А = 4
      А _ А А  -> 1 * 4 * 1 * 1 = 4
      _ А А А  -> 4 * 1 * 1 * 1 = 4
      
    • Итого получаем 4 варианта, в которых вместо символа _ может быть любая из 4 букв: К О М Р. Значит, имеем:
    •  4 * 4 = 16 вариантов
      
    • 2. Буква А используется 2 раза:
    • А А _ _  -> 1 * 1 * 4 * 4 = 16
      А _ А _  -> 1 * 4 * 1 * 4 = 16
      А _ _ А  -> 1 * 4 * 4 * 1 = 16
      _ А А _  -> 4 * 1 * 1 * 4 = 16
      _ А _ А  -> 4 * 1 * 4 * 1 = 16
      _ _ А А  -> 4 * 4 * 1 * 1 = 16
      
    • Итого получаем 6 вариантов, в которых вместо символа _ может быть любая из 4 букв: К О М Р. Значит имеем:
    •  16 * 6 = 96 вариантов
      
    • 3. Буква А используется 1 раз:
    • А _ _ _  -> 1 * 4 * 4 * 4 = 64
      _ А _ _  -> = 64
      _ _ А _  -> = 64
      _ _ _ А  -> = 64
      
    • Итого имеем:
    • 64 * 4 = 256 вариантов
      
    • Буква А используется 0 раз:
    • _ _ _ _ -> 44 = 256
      
    • Суммируем результаты всех трех случаев:
    • 16 + 96 + 256 + 256 = 624

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    begin
      var n := 0;
      var str := 'КОМАР';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              begin
                var res := str[s1] + str[s2] + str[s3] + str[s4];
                if res.CountOf('А') <=3 then
                  n += 1;
              end;
      print(n)
    end.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    
    ##
    var d:='комар'.Cartesian(4)
    .where(w->w.countOf('а')<=3).count.print
    Cartesian(4) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 4-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    str = 'КОМАР'
    n = 0
    for s1 in str:
        for s2 in str: 
            for s3 in str:
                for s4 in str:
                    res = s1 + s2 + s3 + s4
                    if res.count('А')<=3:
                        n += 1
    print(n)
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Разбор 8 задания ЕГЭ по информатике (К. Поляков, задание 32):

    Сколько существует различных символьных последовательностей длины 3 в четырёхбуквенном алфавите {A,B,C,D}, если известно, что одним из соседей A обязательно является D, а буквы B и C никогда не соседствуют друг с другом?

    Ответ: 29

    Показать решение:

      ✎ Решение теоретическое:

    • Вспомним формулу получения количества возможных вариантов слов:
    • N = n1 * n2 * n3 * … * nL = nL

    • где n1 — количество вариантов выбора первой буквы,
    • n2 — количество вариантов выбора второй буквы и т.п.
    • Будем рассматривать варианты, расставляя каждую букву последовательно по алфавиту, начиная с первой буквы. При этом будем учитывать указанные ограничения для букв А, B и С:
    • Начинаем с A: A D 4ABCD = 1 * 1 * 4 = 4 
      Начинаем с B: B A D, B B 2BD, B D 4ABCD = 7
      Начинаем с C: C A D, C C 2CD, C D 4ABCD = 7
      Начинаем с D: D A 3BCD, D B 2BD, D C 2CD, D D 4ABCD = 11
      
    • Теперь суммируем количество найденных вариантов:
    • 4 + 7 + 7 + 11 = 29

    📹 Видео (теоретическое решение)


    Разбор 8 задания Тренировочный вариант №3 2018 (от 01.10.2018):

    Из букв С, Р, Е, Д, А составляются трехбуквенные комбинации по следующему правилу – в комбинации не может быть подряд идущих гласных и одинаковых букв.

    Например, комбинации ААР или ЕСС не являются допустимыми.

    Сколько всего комбинаций можно составить, используя это правило?

    Ответ: 66

    Показать решение:

      ✎ Решение теоретическое:

    • Рассмотрим два варианта: когда слово начинается с гласной буквы, и когда оно начинается с согласной.
    • 1. С гласной:

      1.1
      2 3 2 = 2 * 3 * 2 = 12
      гл с  с
      
      1.2
      2 3 2 = 2 * 3 * 2 = 12
      гл с гл
      

      2. С согласной:

      2.1
      3  2  2 = 3 * 2 * 2 = 12
      с  с  с
      
      2.2
      3  2  3 = 3 * 2 * 3 = 18
      с гл  с
      
      2.3
      3  2  2 = 3 * 2 * 2 = 12
      с  с  гл
      
    • Подсчитаем общее количество вариантов:
    • 12 + 12 + 12 + 18 + 12 = 66
      

    ✎ Решение с использованием программирования:

    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    5
    6
    
    ### 
    'среда'.cart(3)// 
     .Select(w -> w.JoinToString('')) // собираем в строку;
     .where(w->w.Pairwise.All(\(a,b) -> a+b not in 'еае'))
     .where(w->w.Pairwise.All(\(a,b) -> a<>b))
     .count.print
    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    begin
      var n := 0;
      var str := 'СРЕДА';
      var glas := 'ЕА';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
          begin
            var res := str[s1] + str[s2] + str[s3];
            // условие для подряд идущих гласных
            if not ((res[1] in glas) and (res[2] in glas) or
               (res[2] in glas) and (res[3] in glas)) then
            // условие для подряд идущих одинаковых букв
              if not ((res[1] = res[2]) or (res[2] = res[3])) then
                n += 1;
          end;
      print(n)
    end.
    Python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    str = 'СРЕДА'
    glas = 'ЕА'
    n = 0
    for s1 in str:
        for s2 in str: 
            for s3 in str:
                res = s1 + s2 + s3 
                if not (s1 in glas and s2 in glas or\
               s2 in glas and s3 in glas) :
                    if not (s1 == s2 or s2 == s3) :
                        n += 1
    print(n)
    С++:

    1
    
     

    Разбор 8 задания (К. Поляков, задание 76):

    Дано слово КОРАБЛИКИ. Таня решила составлять новые 5-буквенные слова из букв этого слова по следующим правилам:
    1) слово начинается с гласной буквы;
    2) гласные и согласные буквы в слове должны чередоваться;
    3) буквы в слове не должны повторяться.

    Сколько существует таких слов?
      
    Типовые задачи для тренировки

    Ответ: 72

    Показать решение:

      ✎ Решение теоретическое:

    • Учтем, что в слове КОРАБЛИКИ две буквы К и две И.
    • Всего в слове 4 гласных, но поскольку две буквы И, то необходимо считать только 3 гласных.
    • Всего в слове 5 согласных, однако две из них — буквы К, поэтому считать следует 4 согласных.
    • Посчитаем количество согласных и гласных для каждой из 5 позиций слова, учитывая, что с каждой последующей буквой количество используемых гласных/согласных уменьшается. Под позициями приведем пример букв:
    • гл   с   гл   с   гл  
      3    4    2   3    1
      оаи   крбл   оа   крб    и
      
    • Количество слов вычисляется как произведение полученных чисел:
    • 3 * 4 * 2 * 3 * 1 = 72
      

    8_21: Решение 8 задания (К. Поляков, задание 210):

    Ксюша составляет слова, меняя местами буквы в слове МИМИКРИЯ.
    Сколько различных слов, включая исходное, может составить Ксюша?

    Ответ: 3360

    Показать решение:

    ✎ Решение с использованием программирования:

    PascalABC.net (приближенный к традиционному, долгое решение):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    begin
      var str := 'МИМИКРИЯ';
      var set1: set of string;
      set1 := [];
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do 
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do 
              for var s5 := 1 to length(str) do  
                for var s6 := 1 to length(str) do
                  for var s7 := 1 to length(str) do  
                    for var s8 := 1 to length(str) do 
                    begin
                      var slovo := str[s1] + str[s2] + str[s3] + str[s4] + str[s5] 
                                  + str[s6] + str[s7] + str[s8];
                      if (slovo.CountOf('М') = 2) and (slovo.CountOf('И') = 3)
                      and (slovo.CountOf('К') = 1)
                      and (slovo.CountOf('Р') = 1)
                      and (slovo.CountOf('Я') = 1) then
                        include(set1, slovo);
                    end;
      print(set1.count);
    end.
    Смысл решения в использовании типа множества (set). При добавлении новых элементов к множеству исключаются повторения.
    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    5
    
    ### 
     'МИМИКРИЯ'.Permutations // перестановки букв
     .Select(w->w.JoinToString('')) // собираем в строку
     .Distinct  // выбираем уникальные
     .Count.Print
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    📹 Видео (программный способ)


    Разбор 8 задания (К. Поляков, задание 116):

    Петя составляет шестибуквенные слова перестановкой букв слова АДЖИКА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?

    Типовые задания для тренировки

    Ответ: 240

    Показать решение:

      ✎ Решение теоретическое:

    • Посчитаем количество слов без двух подряд одинаковых букв. Будем считать относительно буквы А, которых две в заданном слове АДЖИКА. Буквы не могут повторяться, поэтому их кол-во в каждом варианте будет уменьшается:
    • А*А*** = 4*3*2*1 = 24 слова с данным расположением буквы А. 
      А**А** = 4*3*2*1 = 24
      А***А* = 4*3*2*1
      А****А = ...
      *А*А**
      *А**А*
      *А***А
      **А*А*
      **А**А
      ***А*А
      
    • Получили 10 вариантов, и в каждом из них можно составить по 24 слова.
    • Таким образом, получим общее количество слов:
    • 10 * 24 = 240

    ✎ Решение с использованием программирования:

    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 s: set of string;
      s := [];
      var str := 'АДЖИКА';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
                for var s6 := 1 to length(str) do
                begin
                  var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5] + str[s6];
                  if (res.CountOf('А') = 2) and (res.CountOf('Д') = 1) 
                      and (res.CountOf('Ж') = 1) and (res.CountOf('И') = 1) 
                      and (res.CountOf('К') = 1) then
                      if (res[1] <> res[2]) and (res[2] <> res[3]) and (res[3] <> res[4]) 
                          and (res[4] <> res[5]) and (res[5] <> res[6]) then
                      include(s, res);
                end;
      print(s.count)
    end.
    Смысл решения в использовании типа — множества (set). При добавлении новых элементов к множеству исключаются повторения.
    Python:

    1
    
     
    С++:

    1
    
     

    Разбор 8 задания (К. Поляков, задание 112):

    Маша составляет 7-буквенные коды из букв В, Е, Н, Т, И, Л, Ь. Каждую букву нужно использовать ровно 1 раз, при этом код буква Ь не может стоять на последнем месте и между гласными. Сколько различных кодов может составить Маша?

    Типовые задания для тренировки

    Ответ: 4080

    Показать решение:

    ✎ Решение теоретическое:

  • Выполним задание следующим образом: 1. посчитаем общее количество слов, не учитывая никакие ограничения. 2. Затем посчитаем случаи, которые необходимо исключить. 3. Вычтем из результата пункта 1 результат пункта 2.
  • Общее количество независимо от ограничений (учтем, что буквы не должны повторяться):
  • 7 6 5 4 3 2 1 - количество возможных вариантов букв на семи позициях
    
    ИТОГО:
    7! = 5040 слов
  • Посчитаем варианты, которые необходимо исключить. Их будет несколько:
  • а) буква ь — на последнем месте:
  • 6 5 4 3 2 1 Ь = 6! = 720
  • б) буква ь — между гласными:
  • И Ь Е 4 3 2 1  = 24 варианта
    Так как буквы смещаются по всем позициям, то получим (4 И Ь Е 3 2 1, ...):
    24 * 5 = 120
    Е Ь И 4 3 2 1  = 24 варианта
    24 * 5 = 120
    
  • Посчитаем количество слов, согласно условию задачи:
  • 5040 - 720 - 120 - 120 = 4080

    ✎ Решение с использованием программирования:
    Стоит заметить, что теоретическое решение занимает меньше времени, чем программный способ!

    PascalABC.net:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    begin
      var n := 0;
      var str := 'ВЕНТИЛЬ';
      var glas := 'ЕИ';
      for var s1 := 1 to length(str) do
        for var s2 := 1 to length(str) do
          for var s3 := 1 to length(str) do
            for var s4 := 1 to length(str) do
              for var s5 := 1 to length(str) do
                for var s6 := 1 to length(str) do
                  for var s7 := 1 to length(str) do
                  begin
                    var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5] + str[s6] + str[s7];
                    if (res.CountOf('В') = 1) and (res.CountOf('Е') = 1) 
                        and (res.CountOf('Н') = 1) and (res.CountOf('Т') = 1) 
                        and (res.CountOf('И') = 1) and (res.CountOf('Л') = 1)
                        and (res.CountOf('Ь') = 1) then
                      if not (res[7] = 'Ь') then
                        if not ((res[1] in glas) and (res[3] in glas) and (res[2] = 'Ь') or
                            (res[2] in glas) and (res[4] in glas) and (res[3] = 'Ь') or
                            (res[3] in glas) and (res[5] in glas) and (res[4] = 'Ь') or
                            (res[4] in glas) and (res[6] in glas) and (res[5] = 'Ь') or
                            (res[5] in glas) and (res[7] in glas) and (res[6] = 'Ь')) then
                          n += 1
                  end;
      print(n)
    end.
    Python:

    1
    
     
    С++:

    1
    
     

    Сколько существует n-значных чисел, записанных в m-ной системе счисления

    Разбор 8 задания экзамена ЕГЭ 2020 г. (со слов учащегося):

    Сколько существует восьмизначных чисел, записанных в восьмеричной системе счисления, в которых все цифры различны и рядом не могут стоять 2 чётные или 2 нечётные цифры?

    Типовые задания для тренировки

    Ответ: 1008

    Показать решение:

      ✎ Решение теоретическое:

    • Выпишем все четные и нечетные цифры, которые могут использоваться в 8-й с.с.:
    • четные: 0, 2, 4, 6 - итого 4 цифры
      нечетные: 1, 3, 5, 7 - итого 4 цифры
    • Рассмотрим два случая построения числа по заданию: 1) начиная с четной цифры и 2) начиная с нечетной цифры. Изобразим схематично числа, указывая сверху возможное количество цифр на разряд:
    • 1) с четной цифры:
      3  4  3  3  2  2  1  1 = 3*4*3*3*2*2*1*1 = 432
      ч  н  ч  н  ч  н  ч  н
      Самый старший разряд не может быть равен 0 (поэтому 3 цифры из 4 возможных), так как разряд просто потеряется, и число станет семизначным). Каждый последующий разряд включает на одну цифру меньше, так как по заданию цифры не могут повторяться.
      2) с нечетной цифры:
      4  4  3  3  2  2  1  1 = 4*4*3*3*2*2*1*1 = 576
      н  ч  н  ч  н  ч  н  ч
      Каждый последующий разряд включает на одну цифру меньше, так как по заданию цифры не могут повторяться.
    • Сложим количество вариантов в обеих случаях:
    • 432 + 576 = 1008

    ✎ Решение с использованием программирования:

    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    5
    
    ###
    '01234567'.Permutations // т.к. цифр итак 8 штук
    .where(w->w.First<>'0') // первая цифра не может быть 0
    .where(w->w.Pairwise.All(\(a,b)-> (a.ToDigit + b.ToDigit).IsOdd)) // проверка пар четных и нечетных
    .count.print
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    Список в алфавитном порядке

    ЕГЭ по информатике 2017 задание 8 (10) ФИПИ вариант 20 (Крылов С.С., Чуркина Т.Е.):

    Все 5-буквенные слова, составленные из букв А, О, У, записаны в алфавитном порядке. Ниже приведено начало списка:

    1. ААААА
    2. ААААО
    3. ААААУ
    4. АААОА

    Запишите слово, которое стоит под номером 242 от начала списка.

    Ответ: УУУУО

    Показать решение:

      ✎ Решение теоретическое:

    • Данное задание лучше решать следующим образом. Подставим вместо букв цифры (А -> 0, О -> 1, У -> 2):
    • 1. 00000
      2. 00001
      3. 00002
      4. 00010
      ...
      
    • Видим, что каждая последующее число получается путем прибавления в столбик единицы к предыдущему числу. В троичной системе счисления! Т.к. цифр всего три.
    • Порядковый номер, написанный рядом с пунктом, всегда на единицу больше располагающейся рядом цифры в троичной системе счисления.
    • Значит, пункту под номером 242 будет соответствовать число 241 в троичной системе счисления.
    • Переведем 241 в 3-ю систему делением на 3:
    •         остатки
      241 | 3 | 1
       80 | 3 | 2
       26 | 3 | 2
        8 | 3 | 2
        2 |   |
      
    • Перепишем остатки снизу вверх: 22221, им соответствуют буквы УУУУО

    ✎ Решение с использованием программирования:

    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    
    ##
    var d:='АОУ'.Order // сортируем по алфавиту
    .Cartesian(5)
    .Numerate.print

    Смотрим слова и находим по номеру нужное слово:

    … (241,[У,У,У,У,А]) (242,[У,У,У,У,О]) (243,[У,У,У,У,У])
    Cartesian(5) — метод расширения последовательности, возвращающий декартову степень множества символов, т.е. в нашем случае перебор 5-знаковых слов из заданных символов
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    📹 Видео (теоретический способ)


    8 (10) задание. Демоверсия ЕГЭ 2018 информатика:

    Все 4-буквенные слова, составленные из букв Д, Е, К, О, Р, записаны в алфавитном порядке и пронумерованы, начиная с 1.
    Ниже приведено начало списка.

    1. ДДДД
    2. ДДДЕ
    3. ДДДК
    4. ДДДО
    5. ДДДР
    6. ДДЕД
    …
    

    Под каким номером в списке идёт первое слово, которое начинается с буквы K?

    Ответ: 251

    Показать решение:

      ✎ Решение теоретическое:

    • Подставим вместо букв цифры (Д -> 0, Е -> 1, К -> 2, О -> 3, Р -> 4):
    • 1. 0000
      2. 0001
      3. 0002
      4. 0003
      5. 0004
      6. 0010
      ...
      
    • Видим, что каждое последующее число получается путем прибавления единицы в столбик к предыдущему (в пятеричной системе счисления! т.к. цифр всего пять).
    • Порядковый номер, написанный рядом с пунктом, всегда на единицу больше располагающейся рядом цифры в пятеричной системе счисления.
    • Определим число, которое получится, если мы в начале слова поставим букву К (остальные должны остаться нулями, т.к. числа идут по порядку, а нам необходимо первое, начинающееся с К):
    • K -> 2 -> 2000
    • Полученное число — 2000 — необходимо перевести из пятеричной системы счисления в десятичную, чтобы узнать порядковый номер:
    • По формуле разложения числа по степеням основания:
      
      20005 = 2 * 53 + 0 * 22 + 0 + 0 = 2 * 125 = 25010 
      
    • Поскольку порядковый номер числа всегда на единицу больше самого числа, то имеем 251.

    ✎ Решение с использованием программирования:

    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    5
    6
    
    ###
    var d:='декор'.Order // сортируем по алфавиту
    .Cartesian(4) // d - массива из массивов символов 
    .Numerate // нумерация
    .where(\(i,w)->w[0] = 'к') // рассматриваем и номер и слово
    .first[0].print // выводим именно номер
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Решение 8 (10) задания ЕГЭ по информатике 2018 (контрольный вариант № 2 экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков, Тренажер ЕГЭ):

    Все 4-буквенные слова, составленные из букв П, Р, С, Т, записаны в алфавитном порядке.
    Вот начало списка:

    1. ПППП
    2. ПППР
    3. ПППС
    4. ПППТ
    5. ППРП
    ... ...
    

    На каком месте в списке стоит первое слово, начинающееся с буквы Р?
      
    Типовые задачи для тренировки

    Ответ: 65

    Показать решение:

    📹 Видео


    Разбор 8 задания (К. Поляков, задание 80):

    Все четырёхбуквенные слова, составленные из букв В, Е, Г, А, Н записаны в алфавитном порядке и пронумерованы, начиная с 1. Начало списка выглядит так:

    1. АААА
    2. АААВ
    3. АААГ
    4. АААЕ
    5. АААН
    6. ААВА
    …
    

    Под каким номером в списке идёт первое слово, в котором нет буквы А?

    Ответ: 157

    Показать решение:

      ✎ Решение теоретическое:

    • Пронумерованный список начинается со всех букв А. Представим, что А — 0, В — 1, Г — 2, Е — 3, Н — 4. Получим следующий список:
    • 1. 0000
      2. 0001
      3. 0002
      4. 0003
      5. 0004
      6. 0010
      
    • Такой список представляет из себя увеличивающиеся числа 5-й системы счисления.
    • Так как букве А соответствует 0, то первое (самое младшее) четырехзначное число без нуля — это 1111.
    • Чтобы вычислить под каким номером стоит данное число, переведем его в 10-ю систему и прибавим к результату единицу (так как порядковые номера в списке на единицу больше самих чисел):
    • 11115 = 1 * 53 + 1 * 52 + 1 * 51 + 1 * 50 = 156
      156 + 1 = 157
      

    ✎ Решение с использованием программирования:

    PascalABC.net (использование LINQ, быстрое решение):

    1
    2
    3
    4
    5
    6
    7
    
    ###
    var d:='веган'.Order // сортируем по алфавиту
    .Cartesian(4) // d - массива из массивов символов
    .Select(x->x.JoinToString(''))// d - массив из строк 
    .Numerate // нумерация
    .where(\(i,w)->'а' not in w) // рассматриваем и номер и слово
    .first[0].print // выводим именно номер
    * LINQ (Language Integrated Query) — язык интегрированных запросов
    Python:

    1
    
     
    С++:

    1
    
     

    📹 Видео (теоретическое решение)


    Вероятность событий

    Разбор 8 задания ЕГЭ по информатике (сайт «Решу ЕГЭ», задание № 4795):

    За чет­верть Ва­си­лий Пуп­кин по­лу­чил 20 оценок. Со­об­ще­ние о том, что он вчера по­лу­чил четверку, несет 2 бита информации.

    Сколь­ко чет­ве­рок по­лу­чил Ва­си­лий за четверть?

    Ответ: 5

    Показать решение:

    • Для решения данного задания необходимо вспомнить две формулы:
    • 1. Формула Шеннона:

      x = log2(1/p)
      x - количество информации в сообщении о событии
      p - ве­ро­ят­ность со­бы­тия

      2. Формула вероятности случайного события:

      p(A) = m/n
      m - число случаев, способствующих событию А
      n - общее число равновозможных случаев
    • Подставим в первую формулу известное значение — вероятность того, что Ва­си­лий по­лу­чил чет­вер­ку:
    • 2 = log2(1/p);
          => 
      1/p = 4; 
          =>
      p = 1/4
    • Затем подставим известное по условию значение в формулу вероятности случайного события:
    • p = ?/20
    • Поскольку p мы уже нашли, подставим найденное значение и найдем искомое число — количество четверок за четверть:
    • 1/4 = ?/20
      
      ? = 1/4 * 20 = 5

    📹 Видео


    Информатика ЕГЭ 7 задание разбор

    7-е задание: «Кодирование графической и звуковой информации, объем и передача информации»
    Уровень сложности — базовый,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 5 минут.
      
    Проверяемые элементы содержания: Умение определять объём памяти, необходимый для хранения графической и звуковой информации
    До ЕГЭ 2021 года — это было задание № 9 ЕГЭ

    Плейлист видеоразборов задания на YouTube:
    Задание демонстрационного варианта 2022 года ФИПИ


    Тема: Кодирование изображений

    ЕГЭ по информатике 2017 задание 7 (9) ФИПИ вариант 1 (Крылов С.С., Чуркина Т.Е.):

    Какой минимальный объем памяти (в Кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 160 х 160 пикселей при условии, что в изображении могут использоваться 256 различных цветов? В ответе запишите только целое число, единицу измерения писать не нужно.

    Похожие задания для тренировки

    Ответ: 25

    Показать решение:

    • Используем формулу нахождения объема:
    • I = M x N * i
    • Подсчитаем каждый сомножитель в формуле, стараясь привести числа к степеням двойки:
    • M x N:
    • 160 * 160 = 20 * 2³ *  20 * 2³ = 400 * 26 = 
      = 25 * 24 * 26
      
    • Нахождение глубины кодирования i:
    • 256 = 28 
      т.е. 8 бит на пиксель  (из формулы кол-во цветов = 2i)
      
    • Находим объем:
    • I = 25 * 24 * 26 * 23 = 25 * 213 - всего бит на всё изображение
      
    • Переводим в Кбайты:
    • (25 * 213) / 213 = 25 Кбайт
      

    📹 Видео


    Тема: Кодирование изображений

    ЕГЭ по информатике задание 9.2 (источник: 9.1 вариант 11, К. Поляков):

    Рисунок размером 128 на 256 пикселей занимает в памяти 24 Кбайт (без учёта сжатия). Найдите максимально возможное количество цветов в палитре изображения.

    Типовые задания для тренировки

    Ответ: 64

    Показать решение:

    • По формуле объема файла изображения имеем:
    • I = M * N * i
    • где M * N — общее количество пикселей. Найдем это значение, используя для удобства степени двойки:
    • 128 * 256 = 27 * 28 = 215
    • В вышеуказанной формуле i — это глубина цвета, от которой зависит количество цветов в палитре:
    • Количество цветов = 2i
    • Найдем i из той же формулы:
    • i = I / (M*N)

    • Учтем, что 24 Кбайт необходимо перевести в биты. Получим:
    • 23 * 3 * 210 * 23:
      i = (23 * 3 * 210 * 23) / 215 = 
      = 3 * 216 / 215 = 6 бит
      
    • Теперь найдем количество цветов в палитре:
    • 26 = 64 вариантов цветов в цветовой палитре

    📹 Видео


    Тема: Кодирование изображений

    ЕГЭ по информатике задание 9.3 (источник: 9.1 вариант 24, К. Поляков):

    После преобразования растрового 256-цветного графического файла в 4-цветный формат его размер уменьшился на 18 Кбайт. Каков был размер исходного файла в Кбайтах?
      
    Типовые задания для тренировки

    Ответ: 24

    Показать решение:

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей,
      а i — глубина кодирования цвета (количество бит, выделенное на 1 пиксель)

    • i можно найти, зная количество цветов в палитре:
    • количество цветов = 2i
      до преобразования: i = 8 (28 = 256)
      после преобразования: i = 2 (22 = 4)
      
    • Составим систему уравнений на основе имеющихся сведений, примем за x количество пикселей (разрешение):
    • I = x * 8
      I - 18 = x * 2
      
    • Выразим x в первом уравнении:
    • x = I / 8
    • Подставим во второе уравнение и найдем I (объем файла):
    • I - 18 = I / 4
      4I - I = 72
      3I = 72
      I = 24
      

    📹 Видео


    Тема: Кодирование изображений

    ЕГЭ по информатике задание 7.4 (источник: 9.1 вариант 28, К. Поляков, С. Логинова):

    Цветное изображение было оцифровано и сохранено в виде файла без использования сжатия данных. Размер полученного файла – 42 Мбайт. Затем то же изображение было оцифровано повторно с разрешением в 2 раза меньше и глубиной кодирования цвета увеличили в 4 раза больше по сравнению с первоначальными параметрами. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной оцифровке.
     
    Типовые задания для тренировки

    Ответ: 42

    Показать решение:

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей или разрешение,
      а i — глубина цвета (количество бит, выделенное на 1 пиксель)

    • В такого рода задачах необходимо учесть, что уменьшение разрешения в 2 раза, подразумевает уменьшение в 2 раза пикселей отдельно по ширине и по высоте. Т.е. в целом N уменьшается в 4 раза!
    • Составим систему уравнений на основе имеющихся сведений, в которой первое уравнение будет соответствовать данным до преобразования файла, а второе уравнение — после:
    • 42 = N * i
      I = N / 4 * 4i
      
      
    • Выразим i в первом уравнении:
    • i = 42 / N
    • Подставим во второе уравнение и найдем I (объем файла):
    • \[ I= \frac {N}{4} * 4* \frac {42}{N} \]

    • После сокращений получим:
    • I = 42
      


    Тема: Кодирование изображений и скорость передачи

    ЕГЭ по информатике задание 7.5 (источник: 9.1 вариант 30, К. Поляков, С. Логинова):

    Изображение было оцифровано и сохранено в виде растрового файла. Получившийся файл был передан в город А по каналу связи за 72 секунды. Затем то же изображение было оцифровано повторно с разрешением в 2 раза больше и глубиной кодирования цвета в 3 раза меньше, чем в первый раз. Сжатие данных не производилось. Полученный файл был передан в город Б, пропускная способность канала связи с городом Б в 3 раза выше, чем канала связи с городом А.
    Сколько секунд длилась передача файла в город Б?
      
    Типовые задания для тренировки

    Ответ: 32

    Показать решение:

    • По формуле скорости передачи файла имеем:
    • V = I / t

      где I — объем файла, а t — время

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей или разрешение,
      а i — глубина цвета (количество бит, выделенное на 1 пиксель)

    • Для данной задачи, необходимо уточнить, что разрешение на самом деле имеет два сомножителя (пикселей по ширине * пикселей по высоте). Поэтому при увеличении разрешения в два раза, увеличатся оба числа, т.е. N увеличится в 4 раза вместо двух.
    • Изменим формулу получения объема файла для города Б:
    • \[ I= \frac {2*N * i}{3} \]

    • Для города А и Б заменим значения объема в формуле для получения скорости:
    • Город А:

      \[ V= \frac {N*i}{72} \]

      Город Б:

      \[ 3*V= \frac{\frac {4*N*i}{3}}{t} \]

      или:

      \[ t*3*V= \frac {4*N*i}{3} \]

    • Подставим значение скорости из формулы для города А в формулу для города Б:
    • \[ \frac {t*3*N*i}{72}= \frac {4*N*i}{3} \]

    • Выразим t:
    • t = 4 * 72 / (3 * 3) = 32 секунды

    📹 Видео


    Тема: Кодирование изображений

    ЕГЭ по информатике задание 7.6 (источник: 9.1 вариант 33, К. Поляков):

    Камера делает фотоснимки размером 1024 х 768 пикселей. На хранение одного кадра отводится 900 Кбайт.
    Найдите максимально возможное количество цветов в палитре изображения.
      
    Типовые задания для терировки

    Ответ: 512

    Показать решение:

    • Количество цветов зависит от глубины кодирования цвета, которая измеряется в битах. Для хранения кадра, т.е. общего количества пикселей выделено 900 Кбайт. Переведем в биты:
    • 900 Кбайт = 22 * 225 * 210 * 23 = 225 * 215
      
    • Посчитаем общее количество пикселей (из заданного размера):
    • 1024 * 768 = 210 * 3 * 28
    • Определим объем памяти, необходимый для хранения не общего количества пикселей, а одного пикселя ([память для кадра]/[кол-во пикселей]):
    • \[ \frac {225 * 2^{15}}{3 * 2^{18}} = \frac {75}{8} \approx 9 \]

      9 бит на 1 пиксель
    • 9 бит — это i — глубина кодирования цвета. Количество цветов = 2i:
    • 29 = 512

    📹 Видео


    Тема: Кодирование изображений

    7 (9) задание. Демоверсия ЕГЭ 2018 информатика:

    Автоматическая фотокамера производит растровые изображения размером 640×480 пикселей. При этом объём файла с изображением не может превышать 320 Кбайт, упаковка данных не производится.
    Какое максимальное количество цветов можно использовать в палитре?

    Ответ: 256

    Показать решение:

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей или разрешение, а i — глубина кодирования цвета (количество бит, выделенное на 1 пиксель)

    • Посмотрим, что из формулы нам уже дано:
    • I = 320 Кбайт, 
      N = 640 * 420 = 307200 = 75 * 212 всего пикселей, 
      i - ?
      
    • Количество цветов в изображении зависит от параметра i, который неизвестен. Вспомним формулу:
    • количество цветов = 2i
    • Поскольку глубина цвета измеряется в битах, то необходимо объем перевести из Килобайт в биты:
    • 320 Кбайт = 320 * 210 * 23 бит  = 320 * 213 бит
    • Найдем i:
    • \[ i = \frac {I}{N} = \frac {320 * 2^{13}}{75 * 2^{12}} \approx 8,5 бит \]

    • Найдем количество цветов:
    • 2i = 28 = 256

    📹 Видео


    7_21: : ЕГЭ по информатике задание 9.21 (источник: К. Поляков, 9.1 вариант 58):

    Для хранения в информационной системе документы сканируются с разрешением 300 ppi. Методы сжатия изображений не используются. Средний размер отсканированного документа составляет 5 Мбайт. В целях экономии было решено перейти на разрешение 150 ppi и цветовую систему, содержащую 16 цветов. Средний размер документа, отсканированного с изменёнными параметрами, составляет 512 Кбайт.

    Определите количество цветов в палитре до оптимизации.

    Типовые задания для тренировки

    Ответ: 1024

    Показать решение:

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей или разрешение, а i — глубина кодирования цвета (количество бит, выделенное на 1 пиксель).

    • Так как по заданию имеем разрешение, выраженное в пикселях на дюйм, то фактически это означает:
    • I = значение ppi2 * N * i
    • Формула количества цветов:
    • количество цветов = 2i
    • Посмотрим, что из формулы нам уже дано до экономного варианта и при экономном варианте:
    • Неэкономный вариант:
      I = 5 Мбайт = 5 * 223 бит, 
      N - ?, 
      i - ?
      300 ppi
      
      Экономный вариант:
      I = 512 Кбайт = 29 * 213 бит = 222 бит, 
      N - ?, 
      i = 4 бит (24 = 16)
      150 ppi
      
    • Так как в экономном режиме нам известны все составляющие формулы, кроме разрешения (N), то найдем разрешение:
    • N = I / (i * 150*150 ppi)
      N = 222 / (4 * 22500)
      
    • Подставим все известные значения, включая найденное N, в формулу для неэкономного режима:
    • I = N * 300*300 ppi * i
      5 * 223 = (222 * 300 * 300 * i) / (22500 * 4);
    • Выразим i и вычислим его значение:
    • i = (5 * 223 * 22500 * 4) / (222 * 300 * 300) = 9000 / 900 = 10 бит
    • По формуле нахождения количества цветов в палитре имеем:
    • 210 = 1024

    Тема: Кодирование звука

    ЕГЭ по информатике 2017 задание 7 (9) ФИПИ вариант 15 (Крылов С.С., Чуркина Т.Е.):

    На студии при четырехканальной (квадро) звукозаписи с 32-битным разрешением за 30 секунд был записан звуковой файл. Сжатие данных не производилось. Известно, что размер файла оказался 7500 Кбайт.

    С какой частотой дискретизации (в кГц) велась запись? В качестве ответа укажите только число, единицы измерения указывать не нужно.
      
    Типовые задания для тренировки

    Ответ: 16

    Показать решение:

    • По формуле объема звукового файла получим:
    • I = β * t * ƒ * S
    • Из задания имеем:
    • I= 7500 Кбайт
      β= 32 бита
      t= 30 секунд
      S= 4 канала
      
    • ƒ — частота дискретизации — неизвестна, выразим ее из формулы:
    • \[ ƒ = \frac {I}{S*B*t} = \frac {7500 * 2^{10} * 2^3 бит}{2^7 * 30}Гц = \frac { 750 * 2^6}{1000}КГц = 2^4 = 16 \]

      24 = 16 КГц

    📹 Видео


    Тема: Кодирование звука и скорость передачи

    ЕГЭ по информатике задание 7.9 (источник: 9.2 вариант 36, К. Поляков):

    Музыкальный фрагмент был оцифрован и записан в виде файла без использования сжатия данных. Получившийся файл был передан в город А по каналу связи. Затем тот же музыкальный фрагмент был оцифрован повторно с разрешением в 2 раза выше и частотой дискретизации в 3 раза меньше, чем в первый раз. Сжатие данных не производилось. Полученный файл был передан в город Б за 15 секунд; пропускная способность канала связи с городом Б в 4 раза выше, чем канала связи с городом А.

    Сколько секунд длилась передача файла в город A? В ответе запишите только целое число, единицу измерения писать не нужно.
      
    Типовые задания для тренировки

    Ответ: 90

    Показать решение:

    • Для решения понадобится формула нахождения скорости передачи данных формулы:
    • V = I/t
    • Вспомним также формулу объема звукового файла:
    • I = β * ƒ * t * s

      где:
      I — объем
      β — глубина кодирования
      ƒ — частота дискретизации
      t — время
      S — кол-во каналов (если не указывается, то моно)

    • Выпишем отдельно, все данные, касающиеся города Б (про А практически ничего не известно):
    • город Б: 
      β - в 2 раза выше
      ƒ - в 3 раза меньше
      t - 15 секунд, 
      пропускная способность (скорость V) - в 4 раза выше
      
    • Исходя из предыдущего пункта, для города А получаем обратные значения:
    • город А: 
      βБ / 2
      ƒБ * 3
      IБ / 2
      VБ / 4
      tБ / 2, tБ * 3, tБ * 4  -  ?
      
    • Дадим объяснения полученным данным:
    • так как глубина кодирования (β) для города Б выше в 2 раза, то для города А она будет ниже в 2 раза, соответственно, и t уменьшится в 2 раза:
    • t = t/2
    • так как частота дискретизации (ƒ) для города Б меньше в 3 раза, то для города А она будет выше в 3 раза; I и t изменяются пропорционально, значит, при увеличении частоты дискретизации увеличится не только объем, но и время:
    • t = t * 3
    • скорость (V)(пропускная способность) для города Б выше в 4 раза, значит, для города А она будет ниже в 4 раза; раз скорость ниже, то время выше в 4 раза (t и V — обратно пропорциональная зависимость из формулы V = I/t):
    • t = t * 4
    • Таким образом, с учетом всех показателей, время для города А меняется так:
    • \[ t_А = \frac {15}{2} * 3 * 4 \]

      90 секунд

    📹 Видео


    Тема: Кодирование звука

    ЕГЭ по информатике задание 7.10 (источник: 9.2 вариант 43, К. Поляков):

    Музыкальный фрагмент был записан в формате стерео (двухканальная запись), оцифрован и сохранён в виде файла без использования сжатия данных. Размер полученного файла – 30 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате моно и оцифрован с разрешением в 2 раза выше и частотой дискретизации в 1,5 раза меньше, чем в первый раз. Сжатие данных не производилось.

    Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.
      
    Типовые задания для тренировки

    Ответ: 20

    Показать решение:

    • Вспомним формулу объема звукового файла:
    • I = β * ƒ * t * S

      I — объем
      β — глубина кодирования
      ƒ — частота дискретизации
      t — время
      S -количество каналов

    • Выпишем отдельно, все данные, касающиеся первого состояния файла, затем второго состояния — после преобразования:
    • 1 состояние:
      S = 2 канала
      I = 30 Мбайт
      
      2 состояние:
      S = 1 канал
      β = в 2 раза выше
      ƒ = в 1,5 раза ниже
      I = ?
      
    • Так как изначально было 2 канала связи (S), а стал использоваться один канал связи, то файл уменьшился в 2 раза:
    • I = I / 2
    • Глубина кодирования (β) увеличилась в 2 раза, то и объем (I) увеличится в 2 раза (пропорциональная зависимость):
    • I = I * 2
    • Частота дискретизации (ƒ) уменьшилась в 1,5 раза, значит, объем (I) тоже уменьшится в 1,5 раза:
    • I = I / 1,5

       

    • Рассмотрим все изменения объема преобразованного файла:
    • I = 30 Мбайт / 2 * 2 / 1,5 = 20 Мбайт

    📹 Видео


    Тема: Кодирование звука и скорость передачи

    ЕГЭ по информатике задание 7.11 (источник: 9.2 вариант 72, К. Поляков):

    Музыкальный фрагмент был оцифрован и записан в виде файла без использования сжатия данных. Получившийся файл был передан в город А по каналу связи за 100 секунд. Затем тот же музыкальный фрагмент был оцифрован повторно с разрешением в 3 раза выше и частотой дискретизации в 4 раз меньше, чем в первый раз. Сжатие данных не производилось. Полученный файл был передан в город Б за 15 секунд.

    Во сколько раз скорость (пропускная способность канала) в город Б больше пропускной способности канала в город А?
      
    Типовые задания для тренировки

    Ответ: 5

    Показать решение:

    • Вспомним формулу объема звукового файла:
    • I = β * ƒ * t * S


      I — объем
      β — глубина кодирования
      ƒ — частота дискретизации
      t — время

    • Выпишем отдельно, все данные, касающиеся файла, переданного в город А, затем преобразованного файла, переданного в город Б:
    • А:
      t = 100 c.
      
      Б:
      β = в 3 раза выше
      ƒ = в 4 раза ниже
      t = 15 c.
      

       
      ✎ 1 способ решения:
       

    • Скорость передачи данных (пропускная способность) зависит от времени передачи файла: чем больше время, тем ниже скорость. Т.е. во сколько раз увеличится время передачи, во столько раз уменьшится скорость и наоборот.
    • Из предыдущего пункта видим, что если мы вычислим, во сколько раз уменьшится или увеличится время передачи файла в город Б (по сравнению с городом А), то мы поймем, во сколько раз увеличится или уменьшится скорость передачи данных в город Б (обратная зависимость).
    • Соответственно, представим, что преобразованный файл передается в город А. Объем файла изменился в 3/4 раза (глубина кодирования (β) в 3 раза выше, частота дискретизации (ƒ) в 4 раза ниже). Объем и время изменяются пропорционально. Значит и время изменится в 3/4 раза:
    •  tA для преобразов. = 100 секунд * 3 / 4 = 75 секунд
    • Т.е. преобразованный файл передавался бы в город А 75 секунд, а в город Б 15 секунд. Вычислим, во сколько раз снизилось время передачи:
    • 75 / 15 = 5
    • Раз время передачи в город Б снизилось в 5 раз, соответственно, скорость увеличилась в 5 раз.
    • Ответ: 5
       
      ✎ 2 способ решения:
       

    • Выпишем отдельно все данные, касающиеся файла, переданного в город А:
      А:
      tА = 100 c.
      VА = I / 100
      
    • Поскольку увеличение или уменьшение во сколько-то раз разрешения и частоты дискретизации приводит к соответствующему увеличению или уменьшению объема файла (пропорциональная зависимость), то запишем известные данные для преобразованного файла, переданного в город Б:
    • Б:
      β = в 3 раза выше
      ƒ = в 4 раза ниже
      t = 15 c.
      IБ = (3 / 4) * I
      VБ = ((3 / 4) * I) / 15
      
    • Теперь найдем соотношение VБ к VА:
    • \[ \frac {V_Б}{V_А} = \frac {3/_4 * I}{15} * \frac {100}{I} = \frac {3/_4 * 100}{15} = \frac {15}{3} = 5 \]

      (((3/4) * I) / 15) * (100 / I)= (3/4 * 100) / 15 = 15/3 = 5

    📹 Видео


    Тема: Кодирование звука

    ЕГЭ по информатике задание 7.12 (источник: 9.2 вариант 80, К. Поляков):

    Производится четырёхканальная (квадро) звукозапись с частотой дискретизации 32 кГц и 32-битным разрешением. Запись длится 2 минуты, её результаты записываются в файл, сжатие данных не производится.

    Определите приблизительно размер полученного файла (в Мбайт). В качестве ответа укажите ближайшее к размеру файла целое число, кратное 10.

    Ответ: 60

    Показать решение:

    • Вспомним формулу объема звукового файла:
    • I = β * ƒ * t * S

      I — объем
      β — глубина кодирования
      ƒ — частота дискретизации
      t — время
      S — количество каналов

    • Для простоты расчетов пока не будем брать во внимание количество каналов. Рассмотрим, какие данные у нас есть, и какие из них необходимо перевести в другие единицы измерения:
    • β = 32 бита
      ƒ = 32кГц = 32000Гц
      t = 2 мин = 120 с
      
    • Подставим данные в формулу; учтем, что результат необходимо получить в Мбайтах, соответственно, произведение будем делить на 223 (23 (байт) * 210 (Кбайт) * 210(Мбайт)):
    • (32 * 32000 * 120) / 223 = 
      =( 25 * 27 * 250 * 120) / 223 = 
      = (250*120) / 211 = 
      = 30000 / 211 = 
      = (24 * 1875) / 211 =
      = 1875 / 128 ~ 14,6
      
    • Полученный результат значения объема умножим на 4 с учетом количества каналов связи:
    •  14,6 * 4 = 58,5
    • Ближайшее число, кратное 10 — это 60.

    📹 Видео


    Тема: Кодирование звука

    Государственный выпускной экзамен ГВЭ 2018 (информатика ГВЭ ФИПИ, задание 7):

    Производится двухканальная (стерео) цифровая звукозапись. Значение сигнала фиксируется 48 000 раз в секунду, для записи каждого значения используется 32 бит. Запись длится 5 минут, её результаты записываются в файл, сжатие данных не производится.

    Какая из приведённых ниже величин наиболее близка к размеру полученного файла?

    1) 14 Мбайт
    2) 28 Мбайт
    3) 55 Мбайт
    4) 110 Мбайт

    Ответ: 4

    Показать решение:

    • По формуле объема звукового файла имеем:
    • I = β * ƒ * t * S
      I — объем
      β — глубина кодирования = 32 бита
      ƒ — частота дискретизации = 48000 Гц
      t — время = 5 мин = 300 с
      S — количество каналов = 2 
    • Подставим в формулу имеющиеся значения:
    • I = 48000 * 32 * 300 * 2
    • Поскольку значения большие, необходимо числа 48000 и 300 выразить в степенях двойки:
    • 48000 | 2
      24000 | 2
      12000 | 2
       6000 | 2     = 375 * 27
       3000 | 2
       1500 | 2
        750 | 2 
        375 | 2 - уже не делится
       187,5
      
      300 | 2     = 75 * 22
      150 | 2
       75 | 2 - уже не делится 
      37,5
      
    • Получим:
    • I = 375 * 75 * 215
    • В предложенных вариантах ответа видим, что результат везде в Мбайт. Значит, необходимо разделить полученный нами результат на 223 (23 * 210 * 210):
    • I = 375 * 75 * 215 / 223 = 28125 / 28
      
    • Найдем приближенное к числу 28125 значение в степени двойки:
    • 210 = 1024
      
      1024  * 2
      2048  * 2
      4096  * 2
      8192  * 2
      16384 * 2
      32768
      
    • Получаем:
    • 210 * 25 = 215 = 32768
      210 * 24 = 214 = 16384
      
    • Число 28125 лежит между этими значениями, значит берем их:
    • 215 / 28 = 27 = 128
      214 / 28 = 26 = 64
      
    • Выбираем ответ, значение в котором находится между двумя этими числами: вариант 4 (110 Мбайт)

    📹 Видео


    Тема: Кодирование звука

    Решение 7 задания ЕГЭ по информатике (диагностический вариант экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков):

    Производится двухканальная (стерео) звукозапись с частотой дискретизации 4 кГц и 64-битным разрешением. Запись длится 1 минуту, ее результаты записываются в файл, сжатие данных не производится.

    Определите приблизительно размер получившегося файла (в Мбайтах). В качестве ответа укажите ближайшее к размеру файла целое число, кратное 2.

    Ответ: 4

    Показать решение:

    • По формуле объема звукового файла имеем:
    • I = β * ƒ * t * S
      I — объем
      β — глубина кодирования = 32 бита
      ƒ — частота дискретизации = 48000 Гц
      t — время = 5 мин = 300 с
      S — количество каналов = 2 
    • Подставим в формулу имеющиеся значения. Для удобства будем использовать степени двойки:
    • ƒ = 4 кГЦ = 4 * 1000 Гц ~ 22 * 210
      B = 64 бит = 26 / 223 Мбайт
      t = 1 мин = 60 c = 15 * 22 c
      S = 2
    • Подставим значения в формулу объема звукового файла:
    • I = 26 * 22 * 210 * 15 * 22 * 21 / 223 = 15/4 ~ 3,75
    • Ближайшее целое, кратное двум — это число 4

    📹 Видео


    Тема: Кодирование видео

    7_22: : ЕГЭ по информатике задание 9.22 (источник: К. Поляков, 9.1 вариант 47):

    Камера снимает видео без звука с частотой 120 кадров в секунду, при этом изображения используют палитру, содержащую 224 = 16 777 216 цветов. При записи файла на сервер полученное видео преобразуют так, что частота кадров уменьшается до 20, а изображения преобразуют в формат, использующий палитру из 256 цветов. Другие преобразования и иные методы сжатия не используются. 10 секунд преобразованного видео в среднем занимают 512 Кбайт.

    Сколько Мбайт в среднем занимает 1 минута исходного видео?

    Типовые задания для тренировки

    Ответ: 54

    Показать решение:

    • Посмотрим, как изменялись параметры файла до преобразования и после:
    • ДО:
      ƒ = 120, 
      i = 24 бит
      
      ПОСЛЕ:
      ƒ = 20, 
      i = 8 бит (28 = 256)
      t = 10 секунд
      I = 512 Кбайт = 29 Кбайт
      
    • Поскольку после преобразования количество кадров в секунду уменьшилось в 6 раз (120 / 20 = 6), а количество бит на пиксель уменьшилось в 3 раза (24 / 8 = 3), то и объем уменьшился в целом в 18 раз (6 * 3 = 18).
    • Вычислим объем файла, передаваемого за 10 секунд, до его преобразования:
    • за 10 секунд: I * 18 = 29 * 18 Кбайт = (29 * 18) . 210 Мбайт = 9 Мбайт 
      
    • Чтобы получить объем, переданный за 1 минуту, необходимо полученное значение умножить на 6:
    • за 1 мин: 9 * 6 = 54 Мбайт 
      

    Тема: Скорость передачи

    ЕГЭ по информатике задание 7.13 (источник: 9.V вариант 5, К. Поляков):

    Скорость передачи данных через ADSL-соединение равна 128000 бит/с. Передача текстового файла через это соединение заняла 1 минуту. Определите, сколько символов содержал переданный текст, если известно, что он был представлен в 16-битной кодировке Unicode.
     
    Типовые задания для тренировки

    Ответ: 480000

    Показать решение:

    • Вспомним формулу скорости передачи данных:
    • V = Q / t
      * Вместо Q можно использовать обозначение I (для объема файла)
      V - скорость
      Q - объем
      t - время
      
    • Что нам известно из формулы (для удобства решения будем использовать степени двойки):
    • V = 128000 бит/с = 210 * 125 бит/с
      t = 1 мин = 60 с = 22 * 15 с
      1 символ кодируется 16-ю битами
      всего символов - ?
      
    • Если мы найдем, сколько бит необходимо для всего текста, тогда, зная что на 1 символ приходится 16 бит, мы сможем найти сколько всего символов в тексте. Таким образом, найдем объем:
    • Q = V * t
      Q = 210 * 125 * 22 * 15 = 
      = 212 * 1875 бит на все символы
      
    • Когда мы знаем, что на 1 символ необходимо 16 бит, а на все символы 212 * 1875 бит, то можем найти общее количество символов:
    • кол-во символов = 212 * 1875 / 16 = 212 * 1875 / 24 = 
      = 28 * 1875 = 480000 
      

    📹 Видео


    Тема: Скорость передачи

    ЕГЭ по информатике задание 9.14 (источник: 9.V вариант 23, К. Поляков):

    У Васи есть доступ к Интернет по высокоскоростному одностороннему радиоканалу, обеспечивающему скорость получения им информации 217 бит в секунду. У Пети нет скоростного доступа в Интернет, но есть возможность получать информацию от Васи по низкоскоростному телефонному каналу со средней скоростью 216 бит в секунду. Петя договорился с Васей, что тот будет скачивать для него данные объемом 8 Мбайт по высокоскоростному каналу и ретранслировать их Пете по низкоскоростному каналу. Компьютер Васи может начать ретрансляцию данных не раньше, чем им будут получены первые 1024 Кбайт этих данных.

    Каков минимально возможный промежуток времени (в секундах), с момента начала скачивания Васей данных, до полного их получения Петей?
      
    Типовые задания для тренировки

    Ответ: 1088

    Показать решение:

    • Вспомним формулу скорости передачи данных:
    • V = Q / t
      * Вместо Q можно использовать обозначение I (для объема файла)
      V - скорость
      Q - объем
      t - время
      
    • Определим, что нам известно:
    • Вася: V = 217 бит/с
      Петя: V = 216 бит/с
      Общий объем Q = 8 Мбайт
      
    • Для начала переведем объем в биты:
    • Q = 8Мбайт = 8 * 223 бит = 23 * 223 = 226 бит
      
    • Также известно, что сначала 1024 Кбайта будут передаваться по скоростному каналу Васи со скоростью 217 бит/с (примем за t1), а затем все 8 Мбайт будут передаваться по низкоскоростному каналу (примем за t2). Найдем время по двум промежуткам:
    • t = Q / V
      t1 = 1024 Кбайт / 217 = 210 * 213 бит / 217 = 
      = 210 / 24 = 64 с
      
      t2 = 226 / 216 = 210 = 1024 c
      
    • Найдем общее время:
    • t = t1 + t2 = 64 + 1024 = 1088
      

    📹 Видео


    Тема: Скорость передачи и кодирование изображений

    ЕГЭ по информатике задание 7.15 (источник: 9.V вариант 28, К. Поляков):

    Сколько секунд потребуется модему, передающему сообщения со скоростью 32000 бит/с, чтобы передать 16-цветное растровое изображение размером 800 x 600 пикселей, при условии, что в каждом байте закодировано максимально возможное число пикселей?
      
    Типовые задания для тренировки

    Ответ: 60

    Показать решение:

    • Вспомним формулу скорости передачи данных:
    • V = Q / t
      * Вместо Q можно использовать обозначение I (для объема файла)
      V - скорость
      Q - объем
      t - время
      
    • Отсюда получаем формулу для времени:
    • t = Q / V
    • Для нахождения времени вычислим объем сообщения по формуле:
    • Q = N * i
      N — общее количество пикселей или разрешение, 
      i — глубина кодирования цвета (количество бит, выделенное на 1 пиксель)
      
      Q = 4 * 480000 
    • Теперь найдем время:
    • t = 4 * 480000 / 32000 = 60 секунд

    Тема: Скорость передачи

    ЕГЭ по информатике задание 7.16 (источник: 9.V вариант 34, К. Поляков):

    Каково время (в минутах) передачи полного объема данных по каналу связи, если известно, что передано 9000 Мбайт данных, причем треть времени передача шла со скоростью 60 Мбит в секунду, а остальное время – со скоростью 90 Мбит в секунду?

    Ответ: 15

    Показать решение:

    • Формула скорости передачи данных:
    • V = Q / t
      * Вместо Q можно использовать обозначение I (для объема файла)
      V - скорость
      Q - объем
      t - время
      
    • При 1/3 t скорость (V) равна 60 Мбит/c
    • При 2/3 t скорость(V) равна 90 Мбит/c
    • Объем переданных данных выразим в Мбитах:
    • 1 Мбайт = 8 Мбит
       Q = 9000 Мбайт * 8 = 72000 Мбит
    • Из формулы выразим объем:
    • Q = V * T
    • Так как общий объем данных у нас известен, получим уравнение:
    • (60 * 1/3t)  + (90 * 2/3t) = 72000
      вынесем t за скобки, получим уравнение:
      t * (20 + 60) = 72000
      выразим t:
      t = 72000 / 80 = 900 с = 15 мин
      

    📹 Видео


    Тема: Скорость передачи

    ЕГЭ по информатике задание 7.17 (источник: 9.V вариант 43, К. Поляков):

    Документ объемом 5 Мбайт можно передать с одного компьютера на другой двумя способами:
    А) Сжать архиватором, передать архив по каналу связи, распаковать
    Б) Передать по каналу связи без использования архиватора.

    Какой способ быстрее и насколько, если

    • средняя скорость передачи данных по каналу связи составляет 218 бит в секунду,
    • объем сжатого архиватором документа равен 20% от исходного,
    • время, требуемое на сжатие документа – 7 секунд, на распаковку – 1 секунда?

    В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.

    Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23.

    Типовые задания для тренировки

    Ответ: А120

    Показать решение:

      Рассмотрим способ А:

    • Сначала найдем объем документа, зная, что он составляет 20% от исходного:
    • Q (объем) = 5 Мбайт * 0.2 = 1 Мбайт = 1 * 223 бит
    • Формула времени передачи данных:
    • t = Q / V
      V - скорость
      Q - объем
      t - время
      
    • Получим t с учетом времени на сжатие и распаковку:
    • t = Q / V + 7 + 1 = 8 + 223 / 218 = 8 + 25 = 40 c

      Рассмотрим способ Б:

    • Для этого способа можно сразу найти время (по формуле):
    • t = Q / V = 5 * 223 / 218 = 5 * 25 = 5 * 32 = 160 c
    • Получаем, что способ А быстрее; вычислим насколько быстрее:
    • 160 с - 40 с = 120 с

    📹 Видео


    Тема: Скорость передачи

    ЕГЭ по информатике задание 7.18 (источник: 9.V вариант 72, К. Поляков):

    Документ объёмом 20 Мбайт можно передать с одного компьютера на другой двумя способами:
    А) сжать архиватором-1, передать архив по каналу связи, распаковать;
    Б) сжать архиватором-2, передать архив по каналу связи, распаковать;

    Какой способ быстрее и насколько, если

    • средняя скорость передачи данных по каналу связи составляет 220 бит в се­кунду,
    • объём документа, сжатого архиватором-1, равен 20% от исходного,
    • на сжатие документа архиватором-1 требуется 15 секунд, на распаковку — 2 се­кунды,
    • объём документа, сжатого архиватором-2, равен 10% от исходного,
    • на сжатие документа архиватором-2 требуется 20 секунд, на распаковку — 4 се­кунды?

    В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.

    Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23.


      
    Типовые задания для тренировки

    Ответ: Б9

    Показать решение:

      Рассмотрим способ А:

    • Сначала найдем объем документа, зная, что он составляет 20% от исходного:
    • Q (объем) = 20 Мбайт * 0.2  = 4 Мбайт = 22 * 223 бит  = 225 бит
    • Формула времени передачи данных:
    • t = Q / V
      V - скорость
      Q - объем
      t - время
      
    • Найдем время для способа А с учетом времени на сжатие и распаковку:
    • tA = 225 / 220 + 17 с = 25 + 17 = 49 с

      Рассмотрим способ Б:

    • Сначала найдем объем документа, зная, что он составляет 10% от исходного:
    • Q (объем) = 20 Мбайт * 0.1  = 2 Мбайт = 21 * 223 бит  = 224 бит
    • Найдем общее время с учетом потраченного времени на сжатие и распаковку:
    • tБ = 224 / 220 + 24 с = 24 + 24 = 40 с
    • Получили, что второй способ (Б) быстрее. Выясним насколько быстрее:
    • 49 - 40 = 9 с

    Тема: Скорость передачи

    Решение 7 ЕГЭ по информатике, задание 7_19 (источник: Тематические тренировочные задания, 2020 г., Самылкина Н.Н., Синицкая И.В., Соболева В.В.):

    Документ (без упаковки) можно передать по каналу связи с одного компьютера на другой за 1 минуту и 40 секунд. Если предварительно упаковать документ архиватором, передать упакованный документ, а потом распаковать на компьютере получателя, то общее время передачи (включая упаковку и распаковку) составит 30 секунд. При этом на упаковку и распаковку данных всего ушло 10 секунд. Размер исходного документа 45 Мбайт.

    Чему равен размер упакованного документа (в Мбайт)?

    Ответ: 9

    Показать решение:

    • Выпишем исходные данные для двух состояний документа, используя неизвестное x для искомого параметра — объема:
    • неупакованный:

      I1 = 45 Мбайт
      t1 = 100 секунд (60 секунд + 40 секунд = 100)

      упакованный:

      I2 = x Мбайт
      t2 = 20 секунд (30 секунд - 10 секунд = 20)
    • Получим систему уравнений:
    • 45 = 100
      х = 20
    • Выразим x, т.е. объем упакованного документа:
    • х = (45 * 20) / 100 = 9 Мбайт

    Информатика ЕГЭ 6 задание разбор

    Решение задания 6 ЕГЭ по информатике для 2021

    6-е задание: «Программирование: основные конструкции»
    Уровень сложности — базовый,
    Требуется использование специализированного программного обеспечения — нет,
    Максимальный балл — 1,
    Примерное время выполнения — 4 минуты.
      
    Проверяемые элементы содержания: Знание основных конструкций языка программирования, понятия переменной, оператора присваивания
    До ЕГЭ 2021 года — это было задание № 8 и задание № 19 ЕГЭ

      
    Задание демонстрационного варианта 2022 года ФИПИ
    Плейлист видеоразборов задания на YouTube:


    6_1 new: Определите, при каком наименьшем введённом значении переменной s программа выведет число 256 (с сайта К. Полякова со ссылкой на М.В. Кузнецову):

    Паскаль:

    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:

    s = int(input())
    n = 1
    while s <= 45:
      s = s + 4
      n = n * 2
    print( n )
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s,  n = 1;
    cin >> s;
    while( s <= 45 ) {
      s = s + 4;
      n = n * 2;
      }
    cout << n;
    }

    Типовые задания для тренировки

    Ответ: 14
    Видеорешение подобного 6 задания на 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 s0 := 1;
        while true do // внешний цикл, бесконечный
        begin
          var s := s0;
          // --- код из условия задания --- //
          var n := 1;
          while s <= 45 do // внутренний цикл из задания
          begin
            s := s + 4;
            n := n * 2;
          end;
          // --- конец кода из условия задания --- //
          if n = 256 then // если найдено, то выводим соответствующее s
          begin 
              print(s0); 
              break;  // выход из бесконечного цикла 
          end;
          s0 := s0 + 1; // 
        end;
      end.

      Пояснение:

    • Поскольку в цикле s увеличивается, а по условию задания следует найти наименьшее значение s, то можно начать с s=1, постоянно увеличивая значение s на единицу во внешнем цикле.
    • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, увеличив его всего на 1. Используем переменную S1 для этих целей.
    • Бейсик:

       
      Python:

      s1 = 1
      while True:  # внешний цикл, бесконечный
          s = s1
          # --- код из условия задания --- 
          n = 1
          while s <= 45:
              s = s + 4
              n = n * 2
          # --- конец кода из условия задания --- 
          if n == 256:
              print(s1)
              break
          s1 += 1
      С++:

       
    6_2 new: Определите, при каком наибольшем введённом значении переменной s программа выведет число 96 (с сайта К. Полякова № 68 со ссылкой на М.В. Кузнецову):

    Паскаль:

    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:

    s = int(input())
    n = 3
    while s <= 51:
      s = s + 7
      n = n * 2
    print( n )
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s,  n = 3;
    cin >> s;
    while( s <= 51 ) {
      s = s + 7;
      n = n * 2;
      }
    cout << n;
    }

    Типовые задания для тренировки

    Ответ: 23
    📹 Видео

    Показать решение:

    ✎ Способ 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.

    Пояснение:

  • Поскольку в цикле s увеличивается, и цикл работает пока s<=50, а по условию следует найти наибольшее значение s, то можно начать с s = 50, постоянно уменьшая значение s на единицу во внешнем цикле.
  • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, уменьшив его всего на 1. Используем переменную S1 для этих целей.
  • Бейсик:

     
    Python:

    s1 = 50
    while True:  # внешний цикл, бесконечный
        s = s1
        # --- код из условия задания --- 
        n = 3
        while s <= 51:
            s = s + 7
            n = n * 2
        # --- конец кода из условия задания --- 
        if n == 96:
            print(s1)
            break
        s1 -= 1
    С++:

     
    6_3 new: (с сайта К. Полякова № 83):

    Сколько существует различных значений d, оканчивающихся на 8, при вводе которых эта приведенная программа выведnет число 50?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var S, N, d: integer;
    begin
      readln(d);
      S := 15;
      N := 10;
      while S <= 2400 do begin
        S := S + d;
        N := N + 5;
      end;
      writeln(N);
    end.
    Бейсик:

     
    Python:

    d = int(input())
    S = 15
    N = 10
    while S <= 2400:
      S = S + d
      N = N + 5
    print(N)
    С++:

     

    Типовые задания для тренировки

    Ответ: 4

    Показать решение:

      ✎ Способ 1 (программный):
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      
      begin
        var counter:=0;
        var d1:=1;
        while true do
        begin
          var d := d1;
          // из условия задачи 
          var s := 15;
          var n := 10;
          while s <= 2400 do
          begin
            s := s + d;
            n:=n + 5;
          end;
          // проверка условий: увеличение счетчика
          if (d mod 10 = 8) and (n = 50) then
          begin
            counter+=1;;
          end;
          d1 += 1;
          // выход из бесконечного цикла
          if d1 = 2400 then break;
        end;
      print (counter)
      end.
    • Вывод:
    • 4
      Бейсик:

       
      Python:

      counter = 0
      d1 = 1
      while True:
          s = 15
          n = 10    
          d = d1
          # --- код из условия задания --- 
          while s <= 2400:
              s = s + d
              n = n + 5
          if d%10==8 and n==50:
              counter+=1
          d1=d1+1
          if d1 == 2400:
              break
      print (counter)
      С++:

       

    6_4 new: с сайта К. Полякова № 138:

    Определите наименьшее и наибольшее введённое значение переменной s, при котором программа выведет число 210. В ответ запишите оба числа в порядке убывания без пробелов и других разделителей

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      readln(s);
      n := 600;
      while n > s do begin
        s := s + 3;
        n := n - 6
      end;
      writeln(n)
    end.
    Бейсик:

     
    Python:

    s = int(input())
    n = 600
    while n > s:
      s = s + 3
      n = n - 6
    print(n)
    С++:

     

    Ответ: 2315

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := -100;
        while true do
        begin
          var n := 600;
          var s := s_;
          while n > s do
          begin
            s := s + 3;
            n := n - 6
          end;
          if n = 210 then
            print(s_); 
          s_ += 1;
        if s > 1000 then
          break;
        end;
      end.
    • Вывод:
    • 15 16 17 18 19 20 21 22 23
    • Записываем в порядке убывания:
    • 2315

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      s_ = -100
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 600
          # --- код из условия задания --- 
          while n > s:
              s = s + 3
              n = n - 6
          # --- конец кода из условия задания --- 
          if  n == 210:
              print(s_)
          s_ += 1
          if s > 1000:
              break

    6_5 new: с сайта К. Полякова № 113:

    Определите, при каком наибольшем положительном введённом значении переменной s программа выведет трёхзначное число.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
      readln (s);
      n := 200;
      while s div n >= 2 do
      begin
        s := s + 5;
        n := n + 5
      end;
      writeln(s)
    end.
    Бейсик:

     
    Python:

    s = int(input())
    n = 200
    while s // n >= 2:
       s = s + 5
       n = n + 5
    print(s)
    С++:

     

    Ответ: 699

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := 1000;
        while true do
        begin
          var n := 200;
          var s := s_;
          while s div n >= 2 do
          begin
            s := s + 5;
            n := n + 5
          end;
          if (s > 99) and (s<1000) then
          begin
            print(s_); break; 
          end;
          s_ -= 1;
        end;
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      s_ = 1000
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 200
          # --- код из условия задания --- 
          while s // n >=2:
              s = s + 5
              n = n + 5
          # --- конец кода из условия задания --- 
          if  99 < s < 1000:
              print(s_)
              break
          s_ -= 1

    6_6 new: с сайта К. Полякова № 148:

    Получив на вход некоторое натуральное число X, этот алгоритм печатает одно число. Сколько существует чисел Х, для которых алгоритм напечатает число на отрезке [2;500]?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var x, s, n: integer;
    begin
      readln(x);
      s := 6 * (x div 15);
      n := 1;
      while s < 300 do begin
        s := s + 18;
        n := n * 2
      end;
      writeln(n)
    end.
    Бейсик:

     
    Python:

    x = int(input())
    s = 6 * (x // 15)
    n = 1
    while s < 300:
      s = s + 18
      n = n * 2
    print(n)
    С++:

     

    Ответ: 360

    Показать решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      begin
        var x := 1;
        var count := 0;
        while true do
        begin
          var s := 6 * (x div 15);
          var n := 1;
          while s < 300 do 
          begin
            s := s + 18;
            n := n * 2
          end;
          if (n >= 2) and (n <= 500) then
            count += 1;
          x += 1;
          if x > 1000 then
            break;
        end;
        print(count)
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      
      x = 1
      count = 0
      while True:  # внешний цикл, бесконечный
          s = 6 * (x // 15)
          n = 1
          while s <300:
              s = s + 18
              n = n * 2
          # --- конец кода из условия задания --- 
          if  1 < n < 501:
              count+=1
          x += 1
          if x > 1000:
              break
      print (count)

    Решения подобных заданий прошлых лет

    Определить, какое число пропущено

    6_14: ЕГЭ по информатике 2020 (Тематические тренировочные задания, 2020 г., Самылкина Н.Н., Синицкая И.В., Соболева В.В., задание № 2):

    Сопоставьте формулу:

    и программу, предназначенную для расчета по данной формуле. Программа написана правильно, а в формуле допущена ошибка.

    Определите, где и какое число в формуле пропущено?
      
    Паскаль:

    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.
    Бейсик:

    INPUT "введите n=", n
    INPUT "введите x=", x
    s=0: p=1
    l=x
    FOR k:=1 to n  
          p = p * k: s = s + 3*l/p
          l = l*x
    NEXT k
    PRINT "S=",S
    END
    Python:

    n = int(input('введите n='))
    x = int(input('введите x='))
    s=0
    p=1
    l=x
    For k in range (1,n+1): 
          p*= k
          s+=3*l/p
          l*=x
    print('S=',S)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int k,n,p,s,x;
    printf("введите n="); scanf("%d",&n);
    printf("введите x="); scanf("%d",&x);
    l=x;
    for (k=1,s=0,p=1;k<=n;k++) {
      p*=k;
      s+=3*l/p;
      l*=x;
    }
    printf("s=%d",s);
    }

      

    Ответ: 3

    Показать решение:

    • Рассмотрим формулу:

    • Фактически она обозначает: сумма xk/ k! для всех k, начиная от 1 до n.

    • Рассмотрим алгоритм программы:
    • Основные действия происходят в цикле, в котором k изменяется от 1 до n (n вводится в начале программы):
    • For k:=1 to n do
    • В следующей строке кода происходит вычисление факториала числа k (в первой итерации цикла 1!, во второй итерации 2! и т.д.):
    • p:=p * k;
    • Следующее выражение служит для подсчета x в степени k (переменной l в начале программы присваивается значение введенного x):
    • l:=l*x;
    • Основная же формула сумматора заключена в строке:
    • s:=s + 3*l/p;
    • Видим, что в исходной заданной формуле в числителе отсутствует число 3.
    • Т.е. исходная формула должна была выглядеть так:

    Простые задания с двумя линейными непересекающимися функциями

    ЕГЭ по информатике 2017 задание ФИПИ вариант 15 (Крылов С.С., Чуркина Т.Е.):

    Определите, что будет напечатано в результате работы следующего фрагмента программы:
      
    Паскаль:

    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.
    Бейсик:

    DIM S, K AS INTEGER
    S = 512
    K = 0
    WHILE S < 2048
      S = S + 64
      K = K + 1
    WEND
    PRINT K
    Python:

    s = 512
    k = 0
    while s < 2048:
      s = s + 64
      k = k + 1
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 512, k = 0;
    while (s < 2048) {
      s = s + 64;
      k = k + 1;
    }
    cout << k << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 24

    Показать решение:

    Рассмотрим алгоритм программы:

    • В цикле k увеличивается на единицу (k — счетчик). Соответственно, k будет равно количеству итераций (повторов) цикла. После завершения работы цикла k выводится на экран, т.е. это и есть результат работы программы.
    • В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на s < 1536 (2048 - 512 = 1536):
    • s:=0;
      k:=0;
      while s < 1536 do
         begin
         ...
      
    • Цикл будет выполняться пока s<1536, а s увеличивается на 64, отсюда следует что итераций цикла (шагов) будет:
    • 1536 / 64 = 24
    • Соответственно, k = 24.

    📹 Видео


    Решение 6 задания ЕГЭ по информатике (контрольный вариант № 2 экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков):

    Определите, что будет напечатано в результате выполнения программы:

    Паскаль:

    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.
    Бейсик:

    DIM S, I AS INTEGER
    I = 1
    S = 105
    WHILE S > 5
      S = S - 2
      I = I + 1
    WEND
    PRINT I
    Python:

    i = 1
    s = 105
    while s > 5:
      s = s - 2
      i = i + 1
    print(i)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 105, i = 1;
    while (s > 5) {
      s = s - 2;
      i = i + 1;
    }
    cout << i << endl;
    return 0;
    }

    Ответ: 51

    Показать решение:

    • Рассмотрим алгоритм. Цикл зависит от переменной s, которая уменьшается каждую итерацию цикла на 2.
    • В цикле также присутствует счетчик - переменная i, которая увеличится на единицу ровно столько раз, сколько итераций (проходов) цикла. Т.е. в результате выполнения программы распечатается значение, равное количеству итераций цикла.
    • Поскольку условие цикла зависит от s, нам необходимо посчитать, сколько раз сможет s уменьшиться на 2 в цикле. Для удобства подсчета изменим условие цикла на while s > 0; так как мы s уменьшили на 5, соответственно, изменим и 4-ю строку на s:=100 (105-5):
    • ...
      s := 100;
      while s > 0 do
      begin
      ...
      
    • Для того чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2:
      100 / 2 = 50 -> количество итераций цикла
      
    • В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит, нам необходимо к результату (50) прибавить 1.
    • 50 + 1 = 51
    • Это значение и будет выведено на экран.

    6 задание. Демоверсия ЕГЭ 2018 информатика:

    Запишите число, которое будет напечатано в результате выполнения следующей программы.
    Паскаль:

    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.
    Бейсик:

    DIM S, N AS INTEGER
    S = 260
    N = 0
    WHILE S > 0
      S = S - 15
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 260
    n = 0
    while s > 0:
      s = s - 15
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 260, n = 0;
    while (s > 0) {
      s = s - 15;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 36

    Показать решение:

      Рассмотрим алгоритм:

    • Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.
    • Цикл завершит свою работу когда s <= 0. Значит, необходимо посчитать сколько чисел 15 "войдет" в число 260, иными словами:
    • 260 / 15 ~ 17,333...
    • Эта цифра должна соответствовать количеству шагов (итераций) цикла. Так как условие цикла строгое - s > 0, то увеличим полученное число на единицу:
    • 17 + 1 = 18 итераций цикла
      
      Проверим:
      17 * 15 = 255  (< 260)
      18 * 15 = 270 (> 260)
      
    • Проверим на более простом примере. Допустим, изначально s=32. Два прохождения цикла даст нам s = 32/15 = 2,133... Число 2 больше 0, соответственно, цикл будет работать еще третий раз.
    • В результате работы программа распечатывает значение переменной n (искомый результат). В цикле переменная n, изначально равная 0, увеличивается на 2. Так как цикл включает 18 итераций, то имеем:
    • n = 18 * 2 = 36

    📹 Видео


    10 Тренировочных вариантов экзаменационных работ для подготовки к ЕГЭ по информатике 2017, задание 8, вариант 1 (Ушаков Д.М.):

    Определите, что будет напечатано в результате выполнения следующего фрагмента программы:
      
    Паскаль:

    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.
    Бейсик:

    DIM S, K AS INTEGER
    S = 50
    K = 1024
    WHILE S > 30
      S = S - 4
      K = K \ 2
    WEND
    PRINT K
    Python:

    s = 50
    k = 1024
    while s > 30:
      s = s - 4
      k = k // 2
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 50, k = 1024;
    while (s > 30) {
      s = s - 4;
      k = k / 2;
    }
    cout << k << endl;
    return 0;
    }

    Ответ: 32

    Показать решение:

    📹 Видео


    Решение 6 задания ЕГЭ по информатике 2018 (диагностический вариант экзаменационной работы 2018 года, С.С. Крылов, Д.М. Ушаков, Тренажер ЕГЭ):

    Определите значение переменной 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;
    Бейсик:

    A = -5
    C = 1024
    WHILE A <> 0
      C = C \ 2
      A = A + 1
    WEND
    Python:

    a = -5
    c = 1024
    while a != 0:
      c = c // 2
      a = a + 1
    С++:

    int a = -5, c = 1024;
    while (a != 0) {
      c = c / 2;
      a = a + 1;
    }

    Ответ: 32

    Показать решение:

    📹 Видео


    6_12: Решение 6 (8) задания (источник: вариант 25, К. Поляков):

    Определите, что будет напечатано в результате работы следующего фрагмента программы.
      
    Паскаль:

    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.
    Бейсик:

    N = 1
    S = 0
    WHILE S <= 365
      S = S + 36
      N = N * 2
    WEND
    PRINT N
    Python:

    n = 1
    s = 0
    while s <= 365:
      s = s + 36
      n = n * 2
    print(n)
    С++:

    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (s <= 365) {
      s = s + 36;
      n = n * 2;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 2048

    Показать решение:

    • с каждым шагом цикла значение s увеличивается на 36, пока не станет больше 365; а значение n увеличивается в 2 раза, так что n=2k, где k – это число итераций цикла;
    • поскольку s увеличивается на 36, конечное значение s должно быть равно 0+36*k , достигается при k=11 (и s=36*11=396);
    • тогда n = 2k = 211 = 2048.

    Сумма или разность двух линейных функций (while s - n или while s + n)

    Разбор 6 (раньше №8) задания ЕГЭ вариант № 1, 2019 Информатика и ИКТ Типовые экзаменационные варианты (10 вариантов), С.С. Крылов, Т.Е. Чуркина:

    Запишите число, которое будет напечатано в результате выполнения следующей программы:

    Паскаль:

    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.
    Бейсик:

    DIM S, N AS INTEGER
    S = 522
    N = 400
    WHILE S - N > 0
      S = S - 20
      N = N - 15
    WEND
    PRINT S
    Python:

    s = 522
    n = 400
    while s - n > 0:
      s = s - 20
      n = n - 15
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 522, n = 400;
    while (s - n > 0) {
      s = s - 20;
      n = n - 15;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 22

    Показать решение:

    • В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
    • № шага условие цикла 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
      ... ...
    • Видим, что в условии разница между значениями составляет 5:
    • 122 - 117 = 5
      117 - 112 = 5
      ...
      
    • Таким образом, чтобы определить количество итераций (шагов) цикла, необходимо значение условия цикла, полученное в первой итерации, разделить на 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-й итерации, получаем условие для 26-й итерации:
    • 25 * 5 = 125 (125 - 3 = 122)
      
      № шага условие цикла s n
      25 2 > 0 s-20=... n-15=...
      26 3 < 0 не выполняется не выполняется
    • Значит, всего в цикле присутствует 25 итераций, в каждой из которых s уменьшается на 20. Посчитаем, на сколько уменьшится значение s в общем:
    • 25 * 20 = 500 (за 25 итераций)
      
      522 - 500 = 22 (вычитаем из исходных данных)
      

    Результат: 22

    📹 Видео


    ЕГЭ по информатике задание 6.13 (источник: вариант 59, К. Поляков)

    Запишите число, которое будет выведено в результате работы программы:
      
    Паскаль:

    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.
    Бейсик:

    DIM S, N AS INTEGER
    S = 10
    N = 55
    WHILE N > S
      S = S + 1
      N = N - 1
    WEND
    PRINT N
    Python:

    s = 10
    n = 55
    while n > s:
      s = s + 1
      n = n - 1
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 10, n = 55;
    while (n > s) {
      s = s + 1;
      n = n - 1;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 32

    Показать решение:

    • Для условия цикла - перенесем влево:
    • n - s > 0
    • Согласно начальным значениям, имеем:
    • 55 - 10 = 45
    • Запишем, как будет изменяться условие цикла в каждой итерации (в каждом шаге):
    • n - 1 > s + 1 =>
      n - s - 2 > 0
      
    • Т.е. условие цикла будет истинным пока возможно вычитать 2. Сколько раз можно вычесть два из 45?
    • для 22 итераций:
      2 * 22 = 44
      в условии цикла имеем 45 > 44, т.е. условие еще истинно
      для 23 итераций:
      2 * 23 = 46
      в условии цикла имеем 45 > 46 - условие ложно, т.е. цикл прекращает работу
    • Соответственно, получили 23 итерации цикла.
    • Изначально n = 55. С каждой итерацией выполнялось n-1. Посчитаем n:
    • n = 55 - 23 = 32

    Поиск наименьшего/наибольшего целого введенного числа d

    ЕГЭ 6.8:

    При каком наименьшем целом введенном числе 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.
    Бейсик:

    DIM S, K, D AS INTEGER
    INPUT D
    S = 0
    K = 0
    WHILE K < 200
      S = S + 64
      K = K + D
    WEND
    PRINT S
    Python:

    d = int (input ())
    s = 0
    k = 0
    while k < 200:
      s = s + 64
      k = k + d
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, k = 0;
    int d;
    cin >> d;
    while (k < 200) {
      s = s + 64;
      k = k + d;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 67

    Показать решение:

    Рассмотрим алгоритм программы:

    • Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит "работу", когда k сравняется с 200 или превысит его (k >= 200).
    • Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
    • Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
    • 64 * x = 192
      число повторов: x = 192 / 64 = 3  
      
    • Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
    • 3 * d = 200 
      d = 200/3 ~ 66,66
      
    • Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
    • 66 + 66 + 66  = 198  (< 200)

      т.е. цикл после трех прохождений еще продолжит работу, что нам не подходит.

    • Для 67:
    • 67 + 67 + 67 = 201 (>200)
    • Данное число 67 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.

    📹 Видео


    ЕГЭ по информатике задание 6.9 (источник: вариант 37, К. Поляков со ссылкой на О.В. Гасанова)

    Запишите через запятую наименьшее и наибольшее значение числа 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.
    Бейсик:

    DIM S, N, D AS INTEGER
    INPUT D
    N = 33
    S = 4
    WHILE S <= 1725
      S = S + D
      N = N + 8
    WEND
    PRINT N
    Python:

    d = int (input ())
    n = 33
    s = 4
    while s <= 1725:
      s = s + d
      n = n + 8
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 4, n = 33;
    int d;
    cin >> d;
    while (s <= 1725) {
      s = s + d;
      n = n + 8;
    }
    cout << n << endl;
    return 0;
    }

    Ответ: 115, 122

    Показать решение:

    Разберем листинг программы:

    • Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
    • Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n = 153.
    • Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 "поместится" в 120 (153 - 33)? :
    • 120 / 8 = 15 раз (количество итераций цикла)
    • Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо s <= 1725 сделаем s <= 1721 (1725-1721)
    • ...
       s := 0;
       while s <= 1721 do begin
      ...
      
    • Найдем d. Так как цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
    • 1721 / 15 = 114,733 - не целое, не подходит
      1722 / 15 = 114,8 - не целое, не подходит
      ...
      берем кратное 5:
      1725 / 15 = 115 - целое, подходит!
      
    • 115 - это наименьшее d при котором n станет равным 153 (за 15 шагов цикла).
    • Найдем наибольшее d. Для этого надо найти такое число, которое соответствует неравенствам:
    • 14 * d <= 1721
      при этом:
      15 * d > 1721
      
    • Найдем:
    • 14 * 122 = 1708 (<=1721)
      15 * 122 = 1830 (>1721)
      
    • Наибольшее d=122

    📹 Видео


    Усложненные задания с двумя линейными функциями

    ЕГЭ по информатике задание 6.6 (источник: вариант 36, К. Поляков)

    Запишите число, которое будет напечатано в результате выполнения следующей программы:
      
    Паскаль:

    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.
    Бейсик:

    DIM S, N AS INTEGER
    S = 0
    N = 0
    WHILE 2*S*S < 123
      S = S + 1
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 0
    n = 0
    while 2*s*s < 123:
      s = s + 1
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, n = 0;
    while (2*s*s < 123) {
      s = s + 1;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 16

    Показать решение:

    Разберем листинг программы:

    • В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2.
    • В результате работы программы на экран выводится значение n.
    • Цикл зависит от s, причем работа цикла завершится когда 2 * s2 >= 123.
    • Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2 * s2 >= 123:
    • 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 - подходит!
      
    • Таким образом, программа выполнит 8 итераций цикла.
    • Определим n, которая увеличивается каждый шаг цикла на 2, значит:
    • n = 2 * 8 = 16

    📹 Видео


    Арифметическая и геометрическая прогрессия

    ЕГЭ по информатике задание 6.10 (источник: вариант 3, К. Поляков)

    Определите, что будет напечатано в результате работы следующего фрагмента программы:
      
    Паскаль:

    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.
    Бейсик:

    DIM S, K AS INTEGER
    S = 3
    K = 1
    WHILE K < 25
      S = S + K
      K = K + 2
    WEND
    PRINT S
    Python:

    s = 3
    k = 1
    while k < 25:
      s = s + k
      k = k + 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 3, k = 1;
    while (k < 25) {
      s = s + k;
      k = k + 2;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    Ответ: 147

    Показать решение:

    Разберем листинг программы:

    • Результатом программы является вывод значения s.
    • В цикле s меняется, увеличиваясь на k, при начальном значении s = 3.
    • Цикл зависит от k. Выполнение цикла завершится при k >= 25. Начальное значение k = 1.
    • В цикле k постоянно увеличивается на 2 -> значит, можно найти количество итераций цикла.
    • Количество итераций цикла равно:
    • n = 25 / 2 ~ 12 
      

      (т.к. k изначально равнялось 1, то в последнее, 12-е прохождение цикла, k = 25; условие цикла ложно)

    • В s накапливается сумма арифметической прогрессии, последовательность элементов которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце нам необходимо будет к результату прибавить 3!
    • s:=0;
      k:=1;
      while k < 25 do begin
       ...
      
    • Тогда арифметическая прогрессия будет выглядеть:
    • 1 + 3 + 5 + 7 ... 
      количество членов прогрессии - 12, т.к. 12 итераций цикла
      
    • Существует формула вычисления суммы арифметической прогрессии:
    • s = ((2 * a1 + d * (n - 1)) / 2) * n

      где a1 - первый член прогрессии,
      d - разность,
      n - количество членов прогрессии (в нашем случае - кол-во итераций цикла)

    • Подставим значения в формулу:
    • (2 * 1 + 2 * 11) / 2 * 12 = 144
      
    • Не забудем, что мы к результату должны прибавить 3:
    • 144+3 = 147
      
    • Это и есть значение s, которое выводится в результате работы программы.

    📹 Видео


    Государственный выпускной экзамен ГВЭ 2019 (информатика ГВЭ ФИПИ, № 15):

    Запишите число, которое будет напечатано в результате выполнения программы:

    Паскаль:

    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.
    Бейсик:

    DIM N, S AS INTEGER
    N = 1
    S = 0
    WHILE N <= 1000
      S = S + N
      N = N * 2
    WEND
    PRINT S
    Python:

    n = 1
    s = 0
    while n <= 1000:
      s = s + n
      n = n * 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (n <= 1000) {
      s = s + n;
      n = n * 2;
    }
    cout << s << endl;
    return 0;
    }

    Ответ: 1023

    Показать решение:

      Рассмотрим алгоритм:

    • Условие цикла зависит от переменной n, которая изменяется в цикле согласно получению степеней двойки:
    • 1  2  4  8  16  32  64  128  256  512  1024
      
    • Когда переменная n принимает значение 1024 (11-й шаг цикла), условие цикла становится ложным и цикл перестает работать. На экран выводится значение s.
    • Переменная s - это сумма элементов геометрической прогрессии, т.к. в ней аккумулируются значения n (числовой ряд, представляющий собой геометрическую прогрессию).
    • Вспомним формулы суммы геометрической прогрессии:
    • 1.

      \[ S_{n} = \frac {b_1-b_{n}*q}{1-q} \]

      2.

      \[ S_{n} = b_{1} * \frac {1-q^n}{1-q} \]

    • В нашем случае знаменатель q = 2, первый элемент прогрессии b1 = 1. Обратим внимание, что на последнем шаге к сумме добавляется значение 512, т.е. n = 10, а bn = 512. Только после этого n еще раз увеличивается в 2 раза и становится = 1024.
    • Вычислим s по формуле, подставив необходимые значения:
    • \[ S_{n} = \frac {1-512*2}{1-2} =1023 \]

    • Проверим по второй формуле:
    • \[ S_{n} = 1 * \frac {1-2^{10}}{1-2}=1023 \]

    • Так как в результате на экран выводится s, то ответ 1023.

    Программирование: массивы и матрицы

    Наибольшее или наименьшее значение переменной s (сумматор)

    Досрочный экзамен 2020 г., вариант 1:

    В программе используется одномерный целочисленный массив 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];
    Бейсик:

    s = 0
    n = 1
    FOR i = 0 TO 11
     IF A(i) > A(n) THEN
       s = s + A(i) + i
     ELSE
       A(n) = A(i)
     END IF
    NEXT i
    Python:

    s = 0
    n = 1
    for i in range(0, 12):
     if A[i] > A[n]:
       s += A[i] + i
     else:
       A[n] = A[i]
    С++:

    s = 0;
    n = 1;
    for (int i = 0; i < 12; i++)
    {
     if (A[i] > A[n])
       s += A[i] + i;
     else
       A[n] = A[i];
    }

    Ответ: 202

    Показать решение:

    Результат: 202

    📹 Видео


    Задание 6 (19) ЕГЭ по информатике 2017 ФИПИ вариант 13 (Крылов С.С., Чуркина Т.Е.):

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:
    s:=0;
    n:=10;
    for i:=0 to n-1 do begin
      s:= s + A[i] + A[i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились двухзначные четные натуральные числа.
      
    Какое наибольшее значение может иметь переменная s после выполнения данной программы?

    Ответ: 1960

    Показать решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 10 раз: от 0 до 9 (т.к. n-1).
    • В цикле повторяется операция, суммирующая два подряд идущих элемента массива, - текущего и следующего:
    • A[i] + A[i+1]
    • Данная сумма накапливается в переменной s, значение которой требуется узнать в задаче.
    • Поскольку по заданию необходимо найти наибольшее значение переменной s, и по заданию элементы массива - двухзначные четные натуральные числа, то представим, что все элементы равны самому большому двухзначному четному числу - 98. Это будет оптимальным вариантом.
    • В первый проход цикла получим:
    • s = 0 + 98 + 98 = 196
    • Полученная сумма будет каждый проход цикла увеличиваться на то же самое число (196):
    • s = 196 + 98 + 98
    • Так как проходов (итераций) цикла 10, то получим:
    • 196 * 10 = 1960

    📹 Видео


    Задание 6 (19) ЕГЭ по информатике 2017 ФИПИ вариант 19 (Крылов С.С., Чуркина Т.Е.):

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:
    s:=1;
    n:=10;
    for i:=1 to 5 do begin
      s:= s * A[i] * A[n-i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились однозначные четные натуральные числа.
      
    Какое наименьшее значение может иметь переменная s после выполнения данной программы?

    Ответ: 1024

    Показать решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 5 раз: от 1 до 5.
    • В цикле повторяется операция произведения двух элементов массива:
    • A[i] * A[n-i+1]
    • Определим, какие элементы перемножаются, подставив для n и i конкретные значения:
    • 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, значение которой и требуется найти.
    • Поскольку в s накапливается произведение элементов массива, а по заданию элементы - однозначные четные натуральные числа, то представим, что в массиве все элементы равны самому малому однозначному четному числу - 2. Это будет оптимальным вариантом, т.к. по заданию, необходимо определить наименьшее значение.
    • В первый проход цикла получим:
    • s = 1 * 2 * 2 = 4
    • Полученное произведение будет каждый проход цикла перемножаться на предыдущее значение (4 - в первом шаге, 16 - во втором шаге и т.п.):
    • s = 4 * 2 * 2 = 16
      ...
      
    • Так как проходов цикла 5, то получим:
    • 45 = 1024

    📹 Видео


    Перестановка в массиве. Определить значение переменной

    6 (19) задание. Демоверсия ЕГЭ 2018 информатика:

    В программе используется одномерный целочисленный массив 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;

    Ответ: 5

    Показать решение:

    Результат: 5

    📹 Видео


    Решение 6 (19) задания ЕГЭ по информатике, вариант 1 (ФИПИ, «ЕГЭ информатика и ИКТ, типовые экзаменационные варианты 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;

    Ответ: 2

    Показать решение:

    • Рассмотрим изменение всех переменных и элементов массива для каждой итерации (прохода) цикла:
    • 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 - - - - - -

    📹 Видео


    Разбор 19 задания (вариант 1, ФИПИ, «ЕГЭ информатика и ИКТ, типовые экзаменационные варианты 2019», С.С. Крылов, Т.Е. Чуркина):

    В программе используется одномерный целочисленный массив 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;

    Ответ: 6

    Показать решение:

    • В задании используется цикл while - с предусловием. Такой цикл выполняется пока условие истинно.
    • В условии цикла сумма каждого элемента массива с предыдущим, начиная с девятого (j=9), сравнивается с числом 4: если сумма элементов больше 4 то цикл выполняется.
    • Для первой итерации цикла имеем:
      while A[9] + A[8] > 4 do
      ...
      
    • Как только встретится сумма элементов, которая меньше либо равна четырем, цикл прекратит свою работу.
    • В цикле происходит обмен значений двух элементов массива, сумма которых рассматривается в условии цикла (через переменную t). Кроме того, происходит уменьшение счетчика цикла, чтобы осуществился переход к следующему элементу массива (j:=j-1).
    • Таким образом, надо узнать сумму элементов, начиная с элементов A[9]+A[8], затем A[8]+A[7] и т.д.:
    • 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 - нет, цикл прекращает свою работу
      
    • Последнее значение счетчика j было равно 6.

    Разбор досрочного ЕГЭ по информатике 2019:

    В программе используется одномерный целочисленный массив 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;

      
    Типовые задания для тренировки - демоверсия ЕГЭ информатика 2020

    Ответ: 240

    Показать решение:

    📹 Видео


    Решение 6 (19) задания (с сайта К. Полякова, № 112):

    В программе используется одномерный целочисленный массив 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);
    Бейсик:

    s=0: n=4
    FOR k=1 to 10  
        IF A(i) <= A(n) THEN
          s = s + A(i)
          t = A(i)
          A(i) = A(n)
          A(n) = t
          n = i MOD 3
        END IF
    NEXT k
    PRINT S
    END
    Python:

    s = 0
    n = 4
    for i in range(10):
      if A[i] <= A[n]:
        s = s + A[i]
        t = A[i]
        A[i] = A[n]
        A[n] = t
        n = i % 3
    print(s)
    С++:

    s = 0;
    n = 4;
    for (i=0; i<=9; i++)
      if (A[i]<=A[n])
        {
        s+=A[i];
        t=A[i];
        A[i]=A[n];
        A[n]=t;
        n=i%3;
        }
    cout << s;

      
    Типовые задания для тренировки

    Ответ: 75

    Показать решение:

    • Рассмотрим алгоритм. Построим трассировочную таблицу, каждая строка которой - очередная итерация цикла.
    • 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
    • При последнем изменении s стало равным 75.

    📹 Видео


    6_23: Решение 19 задания (с сайта К. Полякова, № 117):

    В результате выполнения программы напечатано число 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.
    Бейсик:

    N=5
    m=0
    S=0
    FOR k=1 to N
       INPUT Dat(k) 
    NEXT k 
    FOR k=1 to N
        S = S + 2 * Dat(k)
        IF Dat(k) > m THEN
          m = Dat(k)
        END IF
    NEXT k
    PRINT m
    END
    Python:

    Dat = [0]*100
    N = 5
    m = S = 0
    for k in range(0, N):
        Dat[k] = int(input())
    for k in range(0, N):
        S += 2 * Dat[k]
        if Dat[k] > m:
            m = Dat[k]
    print(m)
    С++:

    #include <iostream> 
    using namespace std; 
     
    int main() {     
    int Dat[100];
    int N = 5;
    int k, m = 0, S = 0;
    for(k=0; k<N; k++)
       cin >> Dat[k];
    for(k=0; k<N; k++) {
       S += 2 * Dat[k];
       if (Dat[k]>m)
           m = Dat[k];
       }
    cout << m;
    return 0;
    }

    Ответ: 60

    Показать решение:

      Рассмотрим алгоритм.

    • В конце программы видим, что на экран выводится значение переменной m. То есть после выполнения всего алгоритма m станет равным 5. Запомним это.
    • Изначально переменная N равна значению 5:
    • N:= 5;
    • В первом цикле формируются значения для пяти элементов массива:
    •   for k := 1 to N do      
          readln(Dat[k]);
    • Во втором цикле видим условие, в котором каждый из пяти элементов массива будет сравниваться с m. Если элемент больше m, то в m сохранится значение этого элемента:
    •    if  Dat[k]>m then
            begin
              m := Dat[k]
            end
    • Исходя из первого нашего пункта имеем, что наибольшее значение из пяти элементов массива - это значение 6. Так как в результате m = 6.
    • В цикле помимо условия находится сумматор, который суммирует 2 * Dat[k]. В задании необходимо определить наибольшее значение S, значит, выгодно, чтобы элементы массивов имели максимальное возможное значение.
    • Предположим, что все пять элементов массива равны 6. Тогда m после прохождения цикла останется равной 6. То есть результат будет верным.
    • Посчитаем S в цикле:
    • S := 0 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 = 12 * 5 = 60

    📹 Видео


    Вставить формулу как
    Блок
    Строка
    Дополнительные настройки
    Цвет формулы
    Цвет текста
    #333333
    Используйте LaTeX для набора формулы
    Предпросмотр
    \({}\)
    Формула не набрана
    Вставить