Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Информатика / Конспекты / Подготовка к ЕГЭ: Задание 20

Подготовка к ЕГЭ: Задание 20


  • Информатика

Поделитесь материалом с коллегами:

Подготовка к ЕГЭ: Задание 20



Условие: Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа L и M.  Укажите наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 7.

Бейсик

Паскаль

DIM X, L, M AS INTEGER

INPUT X

L=0: M=0

WHILE X > 0

   L = L+1

   IF M < (X MOD 10) THEN

      M = X MOD 10

   ENDIF

   X = X \ 10

WEND

PRINT L

PRINT M

var x, L, M: integer;

begin

readln(x);

L:=0; M:=0;

while x>0 do

begin

   L:=L+1;

   if M < (x mod 10) then

   begin

      M:=x mod 10;

   end

   x:= x div 10;

end;

writeln(L); write(M);

end.

Си

Алгоритмический

#include

void main()

{

int x, L, M;

scanf("% d", &x);

L=0; M=0;

while (x>0){

   L=L+1;

   if M < x%10 {

      M = x%10

   }

   x= x/10;

}

printf("%d\n%d", L, M);

}

алг

нач

   цел x, L, M

   ввод x

   L:=0; M:=0

   нц пока x>0

      L:=L+1

      если M < mod(x,10)

      то

         M:= mod(x,10)

      все

      x:=div(x,10)

   кц

   вывод L, нс, M

кон

 

 

 

 

 

  

Решение:   Разберемся, что означают переменные x, L, M.  При инициализации x – исходное натуральное число;  L=0, M=0. Посмотрим, что происходит при выполнении основного цикла.

  нц пока x>0

    L:=L+1

    если M < mod(x,10)

      то

        M:= mod(x,10)

    все

    x:=div(x,10)

  кц

 Значение L при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной L равно количеству выполнений цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – итоговое значение переменной L) равно количеству цифр в исходном числе x. Значение переменой M сравнивается с выражением mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа.   Если эта цифра больше M, то значение M  устанавливается равным этой цифре. Поэтому, итоговое значение переменной M равно максимальной цифре исходного числа.Таким образом, в задаче требуется найти наибольшее трехзначное число, в котором нет цифр больших, чем 7. Это число – 777.Ответ: 777

 Замечание [Лещинер и др. Оптимальный банк заданий для подготовки учащихся. Информатика 2012. Интеллект-центр. М. 2012].

Пусть в текстах программ в  предыдущей задаче операторы взятия остатка и целочисленного деления  X MOD 10 и X \ 10 ( и их аналоги на Паскале, Си и Алгоритмическом языке) заменены на X MOD 8 и X \ 8 соответственно.  Как и в рассмотренной задаче из демо-варианта требуется указать наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 7.

  Решение: Для этого случая справедливы  все приведенные выше рассуждения, если считать, что число x записано в восьмеричной системе счисления. Поэтому, чтобы получить ответ в десятичной системе, нужно результат 7778 перевести из восьмеричной системы в десятичную. 7778 =  7*64 + 7*8 + 7 = 7*(64+8+1) = 7*73 = 511

Ответ: 511.

 




Краткое описание документа:

Подготовка к ЕГЭ: Задание 20

 

Условие: Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа L и M.  Укажите наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 7.

Бейсик

Паскаль

DIM X, L, M AS INTEGER

INPUT X

L=0: M=0

WHILE X > 0

   L = L+1

   IF M < (X MOD 10) THEN

      M = X MOD 10

   ENDIF

   X = X \ 10

WEND

PRINT L

PRINT M

var x, L, M: integer;

begin

readln(x);

L:=0; M:=0;

while x>0 do

begin

   L:=L+1;

   if M < (x mod 10) then

   begin

      M:=x mod 10;

   end

   x:= x div 10;

end;

writeln(L); write(M);

end.

Си

Алгоритмический

#include

void main()

{

int x, L, M;

scanf("% d", &x);

L=0; M=0;

while (x>0){

   L=L+1;

   if M < x%10 {

      M = x%10

   }

   x= x/10;

}

printf("%d\n%d", L, M);

}

алг

нач

   цел x, L, M

   ввод x

   L:=0; M:=0

   нц пока x>0

      L:=L+1

      если M < mod(x,10)

      то

         M:= mod(x,10)

      все

      x:=div(x,10)

   кц

   вывод L, нс, M

кон

 

 

 

 

 

  

Решение:   Разберемся, что означают переменные x, L, M.  При инициализации x – исходное натуральное число;  L=0, M=0. Посмотрим, что происходит при выполнении основного цикла.

  нц пока x>0

    L:=L+1

    если M < mod(x,10)

      то

        M:= mod(x,10)

    все

    x:=div(x,10)

  кц

 Значение L при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной L равно количеству выполнений цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же – итоговое значение переменной L) равно количеству цифр в исходном числе x. Значение переменой M сравнивается с выражением mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа.   Если эта цифра больше M, то значение M  устанавливается равным этой цифре. Поэтому, итоговое значение переменной M равно максимальной цифре исходного числа.Таким образом, в задаче требуется найти наибольшее трехзначное число, в котором нет цифр больших, чем 7. Это число – 777.Ответ: 777

 Замечание [Лещинер и др. Оптимальный банк заданий для подготовки учащихся. Информатика 2012. Интеллект-центр. М. 2012].

Пусть в текстах программ в  предыдущей задаче операторы взятия остатка и целочисленного деления  X MOD 10 и X \ 10 ( и их аналоги на Паскале, Си и Алгоритмическом языке) заменены на X MOD 8 и X \ 8 соответственно.  Как и в рассмотренной задаче из демо-варианта требуется указать наибольшее из таких чисел x,  при вводе которых алгоритм печатает сначала 3, а потом 7.

  Решение: Для этого случая справедливы  все приведенные выше рассуждения, если считать, что число x записано в восьмеричной системе счисления. Поэтому, чтобы получить ответ в десятичной системе, нужно результат 7778 перевести из восьмеричной системы в десятичную. 7778 =  7*64 + 7*8 + 7 = 7*(64+8+1) = 7*73 = 511

Ответ: 511.

 

 

Автор
Дата добавления 11.06.2015
Раздел Информатика
Подраздел Конспекты
Просмотров186
Номер материала 563558
Получить свидетельство о публикации

Похожие материалы

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