ЕГЭ_информатика

9 582 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Юра Баранкин заполнял таблицу истинности функции \((\bar z \vee \bar y) \rightarrow (x \equiv z)\). В тот момент когда его позвал гулять Костя, Юра успел заполнить лишь фрагмент из двух различных строк таблицы. После прогулки Юра заметил, что не указал, к какому столбцу таблицы соответствует каждая из переменных x, y, z.
? ? ? F
1     0
1   1 0

Помогите Юре восстановить столбцы таблицы. Укажите какому столбцу соответствует каждая из переменных x, y, z. 
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Юра Баранкин заполнял таблицу истинности функции \((\bar x \vee \bar z) \rightarrow (x \equiv y)\). В тот момент когда его позвал гулять Костя, Юра успел заполнить лишь фрагмент из двух различных строк таблицы. После прогулки Юра заметил, что не указал, к какому столбцу таблицы соответствует каждая из переменных x, y, z.
? ? ? F
1   1 0
1     0

Помогите Юре восстановить столбцы таблицы. Укажите какому столбцу соответствует каждая из переменных x, y, z. 
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Юра Баранкин заполнял таблицу истинности функции \((x \vee y) \rightarrow (x \equiv z)\). В тот момент когда его позвал гулять Костя, Юра успел заполнить лишь фрагмент из двух различных строк таблицы. После прогулки Юра заметил, что не указал, к какому столбцу таблицы соответствует каждая из переменных x, y, z.
? ? ? F
  0 0 0
    0 0

Помогите Юре восстановить столбцы таблицы. Укажите какому столбцу соответствует каждая из переменных x, y, z. 
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.  
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Прибавить 4
Сколько существует программ, для которых при исходном числе 5 результатом является число 19 и при этом траектория вычислений не содержит число 13?
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Умножить на 3
Сколько существует программ, для которых при исходном числе 2 результатом является число 13 и при этом траектория вычислений содержит число 10?
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Умножить на 2
Сколько существует программ, для которых при исходном числе 5 результатом является число 19 и при этом траектория вычислений содержит число 13?

По каналу связи передаётся последовательность слов в латинском алфавите {А, Е, Р}. Длина каждого слова не превосходит 10 букв, слова могут не быть осмысленными словами русского языка. Каждое слово передается в виде целого числа, полученного следующим образом:
1)      Сначала слово кодируется с помощью неравномерного двоичного кода с кодовыми словами: Е – 0; Р – 10; А – 11;
2)      К полученной двоичной последовательности справа приписывается цифра 1;
3)      Полученная двоичная цепочка переворачивается, то есть, из цепочки 01010111 получается 11101010;
4)      Искомое число N вычисляется в результате перевода двоичной цепочки, полученной на предыдущем шаге, в десятичную систему.
 

Например, символьная последовательность ААЕЕР будет преобразована в 11110010, затем (добавляем единицу в конец) в 111100101, а потом в число: 1 + 2 + 4 + 8 + 64 + 256 = 335. Отметим, что 335 = 1010011112.
Напишите программу, которая, получив на вход натуральное число, декодирует переданное сообщение и определяет, сколько раз в исходном слове встречаются гласные буквы. Считается, что входное число может быть представлено в виде значения целого типа в используемом языке программирования.

Пример входных данных
5483

Пример выходных данных
АЕРАЕРР
4

Примечание. В этом примере: исходное слово: АЕРАЕРР. Кодовая двоичная последовательность: 110101101010, после добавления 1 справа получим: 1101011010101.
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
3. Прибавить 3
Программа для исполнителя Громозека – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 26 и при этом траектория вычислений содержит число 8? 
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Умножить на 3
Программа для исполнителя Громозека – это последовательность команд. Сколько существует программ, для которых при исходном числе 3 результатом является число 15 и при этом траектория вычислений содержит число 11? 
Исполнитель Громозека выполяет некоторые действия с числом на экране. Громозека знает всего три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 3
3. Прибавить 5
Программа для исполнителя Громозека – это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 15 и при этом траектория вычислений содержит число 7? 

На электронную почту пришло письмо, подписанное аббревиатурой (первыми буквами фамилии, имени и отчества (далее - ФИО) отправителя). Аббревиатура оказалась незнакома. Есть список всех предполагаемых отправителей, взятый из ранее полученных писем, среди которых различных людей с такой аббревиатурой не больше 10.
Предлагается написать эффективную, в том числе по используемой памяти, программу, которая определит всех вероятных адресатов – людей, ФИО которых можно сократить до нужной аббревиатуры. ФИО следует выдать в порядке убывания частоты их встречаемости в списке.
На вход программе в первой строке подается аббревиатура (строка, состоящая из трех заглавных латинских букв). Во второй строке находится число N – количество ФИО, полученных в результате анализа почты, не все из них подходят под указанную аббревиатуру. Значение N может быть очень велико. В каждой из следующих N строк записано три слова: фамилия, имя, отчество соответствующего человека. Слова разделяются одним пробелом. В конце и в начале строки пробелов нет. Все слова записаны заглавными латинскими буквами. Длина ФИО не превышает 100 символов. Гарантируется, что, хотя бы один человек с нужной аббревиатурой есть.

Пример входных данных
IPI
4
IVANOV PETR IVANOVICH
PETROV IVAN IVANOVICH
IVANOV PETR IVANOVICH
ILYIN PETR ILYICH

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

Пример выходных данных для приведенного выше примера входных данных
IVANOV PETR IVANOVICH 2
ILYIN PETR ILYICH 1
 

На вход программы подается 366 строк, которые содержат информацию о среднесуточной температуре всех дней 2008 года. Формат каждой из строк следующий: сначала записана дата в виде dd.mm (на запись номера дня и номера месяца в числовом формате отводится строго два символа, день от месяца отделен точкой), затем через пробел записано значение температуры — число со знаком плюс или минус, с точностью до 1 цифры после десятичной точки. Данная информация отсортирована по значению температуры, то есть хронологический порядок нарушен. 

Требуется написать программу, которая будет выводить на экран информацию о месяце (месяцах), среднемесячная температура у которого (которых) наименее отклоняется от среднегодовой. Отклонения считаются одинаковыми, если разница между ними по модулю не превышает 0.00001.
В первой строке вывести среднегодовую температуру. Найденные значения для каждого из месяцев следует выводить в отдельной строке.
Формат вывода:
среднегодовая_температура 
номер_месяца значение_среднемесячной_температуры отклонение_от_среднегодовой_температуры

20194#20194
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно.
Паскаль Си
var x, cnt: integer; 
begin
(*)
(1)  readln(x);
(2)  cnt := 0;
(3)  while x > 0 do begin
(4)    cnt := cnt + 1;
(5)    x := x mod 2;
(6)  end;
(7)  writeln (cnt)
end.
#include<stdio.h>
main(){
  int x, cnt;
(*)
(1)  scanf("%d",&x);
(2)  cnt = 0;
(3)  while (x > 0) {
(4)    cnt = cnt + 1;
(5)    x = x % 2;
(6)  }
(7)  printf("%d", cnt);
}
 
 
Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 6.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.


В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль
Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
20193#20193
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно.
Паскаль Си
var x, cnt: integer; 
begin
(*)
(1)  readln(x);
(2)  cnt := 0;
(3)  while x > 0 do begin
(4)    cnt := cnt + x mod 2;
(5)    x := x div 10;
(6)  end;
(7)  writeln (cnt)
end.
#include<stdio.h>
main(){
  int x, cnt;
(*)
(1)  scanf("%d",&x);
(2)  cnt = 0;
(3)  while (x > 0) {
(4)    cnt = cnt + x % 2;
(5)    x = x / 10;
(6)  }
(7)  printf("%d", cnt);
}
 

Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 15.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.


В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 
20192#20192
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа.   Программист торопился и написал программу неправильно:
 
Паскаль Си
var N: longint;
    sum, d: integer; 
begin
(*)
(1)  readln(N);
(2)  sum := 1;
(3)  while N > 0 do begin
(4)    d := N mod 10;
(5)    N := N div 10;
(6)    sum := d;
(7)  end;
(8)  writeln ( sum )
end.
#include<stdio.h>
main(){
  int N;
  int sum, d;
(*)
(1)  scanf("%d",&N);
(2)  sum = 1;
(3)  while (N > 0) {
(4)    d = N % 10;
(5)    N = N / 10;
(6)    sum = d;
(7)  }
(8)  printf("%d", sum);
}
 
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 256.
2.       Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.


В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 
20191#20191
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа.   Программист торопился и написал программу неправильно:
 
Паскаль Си
var N: longint;
    sum, d: integer; 
begin
(*)
(1)  readln(N);
(2)  sum := 1;
(3)  while N > 0 do begin
(4)    d := d mod 10;
(5)    N := N div 10;
(6)    sum := sum + 1;
(7)  end;
(8)  writeln ( sum )
end.
#include<stdio.h>
main(){
  int N;
  int sum, d;
(*)
(1)  scanf("%d",&N);
(2)  sum = 1;
(3)  while (N > 0) {
(4)    d = d % 10;
(5)    N = N / 10;
(6)    sum = sum + 1;
(7)  }
(8)  printf("%d", sum);
}
 
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 256.
2.       Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.


В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20190#20190
На вход программы поступают 4 неотрицательных целых числа, не превышающие 1000, среди которых могут быть одинаковые. Нужно написать программу, которая выводит количество чисел, кратных 3, и максимальное из этих чисел. Если среди входных данных нет чисел, кратных трёх, программы должна вывести слово 'NO'. Для решения этой задачи ученик написал такую программу:
 
Паскаль Си
const n = 4;
var i, x: integer;
var maximum, count: integer;
begin
(*)
(1)  count := 0;
(2)  maximum := 999;
(3)  for i:=1 to n do begin
(4)    read( x );
(5)    if x mod 3 = 0 then begin
(6)      count := count + 1;
(7)      if x < maximum then
(8)         maximum := x;
(9)    end;
(10)  end;
(11)  if count > 0 then begin
(12)    writeln(count);
(13)    writeln(maximum);
(14)  end
(15)  else
(16)    writeln('NO');                 
end.
#include<stdio.h>
main(){
  conts int n=4;  
  int i, x;
  int maximum, count;
(*)
(1)  count = 0; 
(2)  maximum=999;
(3)  for(i=1;i<=n;i++){
(4)   scanf("%d",&x);
(5)   if (x % 3 == 0) {
(6)    count = count +1;
(7)    if (x < maximum)
(8)       maximum = x;
(9)    } 
(10)  }
(11) if (count>0) {
(12)    print("%d\n",count);
(13)    print("%d\n", maximum);
(14) } 
(15) else
(16)    printf("NO");
}
 

Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе чисел 2  9  4  3.
2.       Приведите пример такой последовательности, содержащей число, кратное 3, что, несмотря на ошибки, программа выдаст верный ответ.
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20189#20189
Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех единиц. Ведущие нули выводить не надо. Если в числе N нет цифр кроме единиц и нулей, необходимо вывести 0. Например, при вводе числа 1984 нужно вывести 489, а при вводе 2001 нужно вывести 2. Для решения этой задачи ученик написал такую программу:
 
Паскаль Си
var n, m: longint;
    d: integer;
begin
(*)
(1)  read(n);
(2)  m := 0;
(3)  while n>=1 do begin
(4)    d := n mod 10;
(5)    if d > 1 then begin
(6)      m := 10*d + m;
(7)    end;
(8)    n:= (n – d) div 10;
(9)  end;
(10)  write(m);
end.
#include<stdio.h>
main(){
  int n, m,d;
(*)
(1)  scanf("%d",&n);
(2)  m=0;
(3)  while (n >= 1) {
(4)    d = n % 10;
(5)    if (d > 1){
(6)       m = 10*d + m;
(7)    } 
(8)    n = (n-d) / 10;
(9)  }
(10)  printf("%d", m);
}
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 1984.
2.       Приведите пример числа, при вводе которого программа выдаст верный ответ.
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20188#20188
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры – единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно. Программист торопился и написал программу неправильно.
Паскаль Си
var N, R, T: longint;
   d: integer;
begin
(*)
(1)  readln(N);
(2)  R:=0;
(3)  T:=1;
(4)  while N>0 do begin
(5)    d := N mod 10;
(6)    if d<>1 then begin
(7)      R := R + d*T;
(8)      T := T+1
(9)    end;
(10)    N := N div 10;
(11)  end;
(12)  writeln(T);
end.
#include<stdio.h>
main(){
  int N, R, T;
  int d;
(*)
(1)  scanf("%d",&N);
(2)  R=0;
(3)  T=1;
(4)  while (N > 0) {
(5)    d = N % 10;
(6)    if (d!=1){
(7)       R = R + d*T;
(8)       T = T+1;
(9)    } 
(10)    N = N / 10;
(11)  }
(12)  printf("%d", T);
}

Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 314.
2.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку – приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20187#20187
Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 108, и выводится его первая (старшая) цифра. Ученик написал такую программу:
Паскаль Си
var n: longint;
begin
(*)
(1)  readln(n);
(2)  while n > 10 do begin
(3)    n := n mod 10
(4)  end;
(5)  writeln ( n )
end.
#include<stdio.h>
main(){
  int n;
(*)
(1)  scanf("%d",&n);
(2)  while (n > 10) {
(3)    n = n % 10;
(4)  }
(5)  printf("%d", n);
}
 
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 1984.
2.       Приведите пример числа, при вводе которого программа выдаст верный ответ.
3.       Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}

Поделиться
Класснуть