Подготовка к ЕГЭ: Задание 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 при каждом выполнении цикла «отбрасывается» последняя...
Раздел Информатика
Класс -
Тип Конспекты
Автор
Дата
Формат docx
Изображения Нет
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Подготовка к ЕГЭ: Задание 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.



© 2010-2020