infoegehelp.ru

Успешно сдать ЕГЭ по информатике
  • Главная
  • Контакты
  • Карта сайта
  • Помощь сайту
Важно
  • Демо варианты ЕГЭ
  • Учим числа: 2 в степени
  • Биты, байты, килобайты
Решение задач
  • Задачи вне основных разделов информатики
Разделы информатики
  • 2011-12-18-14-33-54Системы счисления
  • 2011-12-18-16-45-20Алгебра логики
  • 2011-12-18-16-55-26Программирование
  • 2011-12-18-16-53-40Кодирование информации
  • 2011-12-18-16-56-19Компьютерные сети и Интернет
  • -excelЭлектронные таблицы (Excel)
  • 2011-12-18-16-57-50Базы данных
  • 2011-12-18-16-58-50Графы
  • 2011-12-18-17-00-15Файловая система
  • Устройство компьютера
  • ПО компьютера

Разбор задачи B7 (демо ЕГЭ 2012)

Время выполнения-6 мин, уровень сложности-повышенный

Ниже на 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
кон
Ответ: 777
Решение:

В программе работает один цикл while c условием: x>0. В каждом проходе цикла делим x на 10. и Делаем проходы до тех пор, пока x>0. В последнем проходе x станет равным нулю, а точнее меньше 1-цы, т.к. x задан как целое, значит дробная часть отбрасывается. Получается, что на входе последнего цикла x<10. Например,если б х был равен 2,то 2\10=0 (дробная часть отбрасывается). Значит,последний остаток и равен х, который был на входе последнего прохода.

L хранит число,которое показывает сколько проходов было выполнено в цикле. в M записываем наибольший остаток от деления x на 10. 

"алгоритм печатает сначала 3, а  потом 7". Значит, L=3, M=7. Было выполнено 3 прохода. И наибольший остаток из трех равен 7. Нам нужно определить наибольшее введенное в программу х, значит все остатки должны быть максимальны, и поэтому они равны 7. М при всех 3-х проходах равно 7.

Получаем, на входе третьего прохода х=7, второго-х=77, первого-х=777.  Последнее х и есть искомое.

Перейти к другим задачам.

 

Rambler's Top100

© Латыпова В, 2012-2015. Все права защищены.
Копирование материалов сайта только с разрешения администрации сайта