Подготовка к ЕГЭ по информатике и ИКТ. Задание В8

Разделы: Информатика


Сознательно подойти к решению задания В8 может ученик, который знаком с хотя бы одним из предложенных языком программирования на уровне умения использования циклов и  знания встроенных функций для целочисленных чисел: DIV и MOD – целая часть и остаток. Главной сложностью при выполнении задания является то, что надо понять смысл алгоритма, оформленном на языке программирования, а далее по известным результатам определить исходное число. Рассмотрим примеры для языка программирования Паскаль.

Для объяснения целесообразно привести представленный ниже алгоритм, выполнив на доске трассировку преобразования переменных в программе для произвольного натурального многоразрядного числа, например, 782. Данный алгоритм позволяет подсчитать количество цифр числа:

VAR X,A,B:INTEGER;
BEGIN
  READLN(X);
  A:=0;
  WHILE X>0 DO BEGIN
    A:=A+1;
     X:= X DIV 10
  END;
  WRITELN(A);
END.

ПРИМЕР: а=782 Ответ: 3

Далее рекомендуется рассмотреть  алгоритм вычисления произведение цифр натурального многоразрядного числа, выполнив трассировку для двухразрядного и трехразрядного целых чисел. Формулировка задания: «Получив на вход число Х, эта программа печатает два числа – А и В. Найти исходное Х». Текст программы:

VAR X, A, B : INTEGER;
BEGIN
  READLN(X);
  A := 0; B := 1;
  WHILE X > 0 DO BEGIN
    A := A + 1;
    B := B * (X MOD 10);
    X := X DIV 10;
  END;
  WRITELN(A); WRITE(B);
END.

Для закрепления можно предложить определить Х, опираясь на следующие вопросы:

а) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 72. Ответ: 98.

б) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 72. Ответ: 89.

в) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 72. Ответ: 981.

г) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 72. Ответ: 189.

д) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 711

е) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 117.

ж) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 0. Ответ: 990.

з) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 0. Ответ: 100.

Затем можно рассмотреть алгоритм подсчета суммы цифр натурального числа, выполнив трассировку для двухразрядного и трехразрядного целых чисел. Формулировка задания: «Получив на вход число Х, эта программа печатает два числа – А и В. Найти исходное Х». Здесь А – количество цифр в записи числа, В – минимальная цифра. Текст программы

VAR X, A, B : INTEGER;
BEGIN
  READLN(X);
  A := 0; B := 1;
  WHILE X > 0 DO BEGIN
    A := A + 1;
    B := B + (X MOD 10);
    X := X DIV 10;
  END;
  WRITELN(A); WRITE(B);
END.

Для закрепления можно предложить определить Х, опираясь на следующие вопросы:

а) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 6. Ответ: 60

б) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 6. Ответ: 15.

в) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 6. Ответ: 600.

г) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 6. Ответ: 105.

д) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10. Ответ: 91.

е) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10. Ответ: 19.

ж) Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 11. Ответ: 920.

з) Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 11. Ответ: 119.

Следующий алгоритм находит максимальную цифру в записи числа. Формулировка задания: «Получив на вход число Х, эта программа печатает два числа  А и В. Найти исходное Х». Здесь А – количество цифр в записи числа, В – максимальная  цифра.

VAR X, A, M: INTEGER;
BEGIN
  READLN(X);
  A:=0; B:=0;
  WHILE X > 0 DO BEGIN
    A:=A+1;
    IF B < (X MOD 10) THEN BEGIN
      B:=X MOD 10;
    END;
    X:= X DIV 10;
  END;
  WRITELN(A); WRITE(B);END.

а) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, а потом 7. Ответ: 77.

б) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, а потом 7. Ответ: 17

в) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 777

г) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 107

Приведенный ниже  алгоритм находит минимальную цифру в записи числа. Формулировка задания:  «Получив на вход число Х, эта программа печатает два числа А и В. Найти исходное Х». Здесь А – количество цифр в записи числа, В – минимальная  цифра.

VAR X, A, M: INTEGER;
BEGIN
  READLN(X);
  A:=0; B:=10;
  WHILE X > 0 DO BEGIN
    A:=A+1;
    IF B > (X MOD 10) THEN  B:=X MOD 10;
       X:= X DIV 10;
  END;
  WRITELN(A); WRITE(B);
END.

а) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, а потом 7. Ответ: 97

б) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, а потом 7. Ответ: 77.

в) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 997.

г) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 3, а потом 7. Ответ: 777.

д) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, а потом 0. Ответ: 90.

е) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 3, а потом 0. Ответ: 100.

И, наконец, можно предложить поработать с алгоритмами, которые подсчитывают количества чисел по условиям. Паскаль воспринимает ноль как четное число. Потому в данной программе подсчитывается количество четных цифр, учитывая 0:

VAR X, A, B : INTEGER;
BEGIN
  READLN(X);
  A := 0; B := 0;
  WHILE X > 0 DO BEGIN
    А:=А+1;
    IF X MOD 2=0 THEN B:=B+1;
    X := X DIV 10;
  END;
  WRITE(A); WRITELN(B);
END.

Рекомендуемые вопросы:

а) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 2. Ответ: 88

б) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 2. Ответ: 20

в) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 5, потом 2. Ответ: 99988

г) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 5, потом 2. Ответ: 11100

д) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 0. Ответ: 99

е) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 0. Ответ: 11

И в последней программе  подсчитывается количество нечетных цифр в записи натурального числа. Ноль не считается нечетным числом в Паскале.

VAR X, A, B : INTEGER;
BEGIN
  READLN(X);
  A := 0; B := 0;
  WHILE X > 0 DO BEGIN
    A:=A+1;
    IF X MOD 2<>0 THEN B:=B+1;
    X := X DIV 10;
  END;
  WRITE(A); WRITELN(B);
END.

Рекомендуемые вопросы:

а) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 2. Ответ: 99

б) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 2. Ответ: 11

в) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 4, потом 2. Ответ: 9988

г) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 4, потом 2. Ответ: 1100

д) Укажите наибольшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 0. Ответ: 88

е) Укажите наименьшее из таких чисел Х, при вводе которых алгоритм печатает сначала 2, потом 0. Ответ: 20