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