У вас вопросы?
У нас ответы:) SamZan.net

Тема Анализ программы содержащей подпрограммы циклы и ветвления

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024

 К. Поляков, 2009-2013

B8 (повышенный уровень, время – 5 мин)

Тема:  Анализ программы, содержащей подпрограммы, циклы и ветвления.

Что нужно знать:

  •  операции целочисленного деления (div) и взятия остатка (mod)
  •  как работают операторы присваивания, циклы и условные операторы в языке программирования

Пример задания:

Ниже записан алгоритм. После выполнения алгоритма было напечатано 3 числа. Первые два напечатанных числа – это числа 9 и 81. Какое наибольшее число может быть напечатано третьим?

var x, y, z: integer;

   r, a, b: integer;

begin

 readln(x, у);

 if у > x then begin

   z:= x; x:= у; у:= z;

 end;

 a:= x; b:= y;

 while b > 0 do begin

   r:= a mod b;

   a:= b;

   b:= r;

 end;

 writeln(a);

 writeln(x);

 write(у);

end.

Решение:

  1.  сложность этой задачи состоит в том, чтобы разобраться в алгоритме
  2.  сначала вводятся два числа и переставляются так, чтобы в переменной x было наибольшее число, а в переменной y – наименьшее из двух:

 if у > x then begin

   z:= x; x:= у; у:= z;

 end;

  1.  затем исходные значения копируются в переменные a и b и с ними выполняется следующий алгоритм

 while b > 0 do begin

   r:= a mod b;

   a:= b;

   b:= r;

 end;

его суть сводится к тому, что меньшее из двух чисел, a и b, каждый раз заменяется на остаток от деления большего на меньшее до тех пор, пока этот остаток не станет равен нулю;

  1.  делаем вывод, что это классический Алгоритм Евклида, который служит для вычисления наибольшего общего делителя (НОД) двух чисел; это делитель в результате оказывается в переменной a
  2.  смотрим, что выводится на экран: сначала значение переменной a (наибольший общий делитель исходных чисел, НОД(x,y)), затем значение x (большее из исходных чисел) и значение y (меньшее из исходных чисел)
  3.  по условию первое число – 9, второе – 81, поэтому третье число должно быть меньше, чем 81, и НОД(81,y) = 9
  4.  наибольшее число, которое меньше 81 и делится на 9, равно 72 (обратите внимание, что исходные числа не могут быть равны, потому что в этом случае их НОД был бы равен 81)
  5.  ответ: 72

Ещё пример задания:

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

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.

 Решение:

  1.  для решения задачи необходимо понять, что делает эта программа
  2.  если это не видно сразу, можно выполнить ручную прокрутку для какого-то простого числа, например, для числа 251:

оператор

условие

x

L

M

readln(x);

251

?

?

L:=0; M:=0;

0

0

while x > 0 do…

251 > 0? да

L:=L+1;

1

if M<(x mod 10) then

M <(251 mod 10)? да

M:=x mod 10;

1

x:=x div 10;

25

while x > 0 do…

25 > 0? да

L:=L+1;

2

if M<(x mod 10) then…

M <(25 mod 10)? да

M:=x mod 10;

5

x:=x div 10;

2

while x > 0 do…

2 > 0? да

L:=L+1;

3

if M<(x mod 10) then…

M <(2 mod 10)? нет

x:=x div 10;

0

while x > 0 do…

0 > 0? нет

writeln(L); write(M);

3

5

  1.  можно догадаться, что в результате работы программы в переменной L окажется число цифр числа, а в переменной M – наибольшая цифра, но это предположение нужно постараться доказать
  2.  нужно вспомнить (и запомнить), что для целого числа остаток от деления на 10 (x mod 10) – это последняя цифра в десятичной записи числа, а целочисленное деление (x div 10) отсекает последнюю цифру, то есть из 123 получается 12
  3.  рассмотрим цикл, число шагов которого зависит от изменения переменной x:

 while x > 0 do begin

   ...

   x:= x div 10;      { отсечение последней цифры }

 end;

здесь оставлены только те операторы, которые влияют на значение x

  1.  из приведенного цикла видно, что на каждом шаге от десятичной записи x отсекается последняя цифра до тех пор, пока все цифры не будут отсечены, то есть x не станет равно 0; поэтому цикл выполняется столько раз, сколько цифр в десятичной записи введенного числа
  2.  на каждом шаге цикла переменная L увеличивается на 1:

 L:=L+1;

других операторов, меняющих значение L, в программе нет; поэтому после завершения цикла в переменной L действительно находится количество цифр

  1.  теперь разберемся с переменной M, которая сначала равна 0; оператор, в котором она меняется, выглядит так:

 if M < (x mod 10) then begin

   M:=x mod 10;

 end;

учитывая, что x mod 10 – это последняя цифра десятичной записи числа, получается что если эта цифра больше, чем значение M, она записывается в переменную M;  

  1.  этот оператор выполняется в цикле, причем выражение x mod 10 по очереди принимает значения всех цифр исходного числа; поэтому после завершения циклам в переменной M окажется наибольшая из всех цифр, то есть наша догадка подтверждается
  2.  итак, по условию задачи фактически требуется найти наибольшее трехзначное число, в котором наибольшая цифра – 7; очевидно, что это 777.
  3.  ответ: 777.

Возможные ловушки и проблемы:

  •  это очень неплохая задача на понимание, тут достаточно сложно «вызубрить» метод решения, можно только освоить последовательность (системность) анализа
    •  ручной прокрутки в такой задаче недостаточно, по её результатам можно угадать алгоритм, но можно и не угадать; в критическом случае можно сделать ручную прокрутку для нескольких чисел им попытаться понять закономерность

Ещё пример задания:

Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 120.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=1;

 while x > 0 do begin

   L:=L+1;

   M:= M*(x mod 8);

   x:= x div 8;

 end;

 writeln(L); write(M);

end.

 Решение:

  1.  для решения задачи необходимо понять, что делает эта программа; повторяя рассуждения из предыдущего примера, выясняем, что
    1.  переменная L с каждым шагом цикла увеличивается на 1
    2.  переменная x на каждом шаге цикла делится на 8 и остаток отбрасывается

поэтому можно сделать вывод, что в конце цикла переменная L будет равна количеству цифр введенного числа, записанного в восьмеричной системе счисления; таким образом, восьмеричная запись числа содержит ровно 3 цифры

  1.  выражение x mod 8 – это последняя цифра восьмеричной записи числа; на каждом шаге цикла переменная M умножается на эту величину, поэтому в результате в M будет записано произведение всех цифр восьмеричной записи введенного числа
  2.  по условию это произведение равно 120, то есть , где a, b и с – числа от 0 до 7 (которые в восьмеричной системе счисления записываются одной цифрой)
  3.  поскольку нам нужно наибольшее число, перебираем делители числа 120, начиная со старшей цифры – 7; видим, что 120 на 7 не делится, поэтому такой цифры в восьмеричной записи числа нет
  4.  но 120 делится на 6, поэтому старшей цифрой может быть 6 – только в том случае, когда второй сомножитель можно представить в виде произведения двух чисел в интервале 1..6
  5.  делим 120 на 6, получаем 20; это число представляется как произведение 5 и 4, каждое из этих чисел записывается в виде одной восьмеричной цифры, то есть, они нам подходят
  6.  вспомним, что нас интересует максимальное число, поэтому цифры нужно выстроить в порядке убывания: 6548
  7.  заметим, что мы получили число в восьмеричной системе, а ответ нужно дать в десятичной; переводим: 6548 = 6·82 + 5·81 + 4·80 = 428.
  8.  ответ: 428.

Возможные ловушки и проблемы:

  •  поскольку в цикле идет деление на 8, мы получаем цифры числа в восьмеричной системе; каждая из них должна быть в интервале 0..7 (не может быть 8 и 9)
    •  на последнем шаге нужно не забыть перевести число из восьмеричной системы в десятичную


Задачи для тренировки
1:

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

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 0.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 1 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

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

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + (x mod 10) div 2;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

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

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 1 then

     M:= M + (x mod 10) div 2;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

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

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if M < x then begin

     M:=x mod 10;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if (M < x) and (x mod 2 = 0) then begin

     M:=x mod 10;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 10.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if (M < x) and (x mod 2 = 1) then begin

     M:= (x mod 10) * 2;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 10.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if M < x then begin

     M:= (x mod 10) * 2;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 72.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 14.

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.

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

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 0.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 0.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 1 then

     M:= M + x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 0 then

     M:= M + (x mod 10) div 2;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:= L + 1;

   if x mod 2 = 1 then

     M:= M + (x mod 10) div 2;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if M < x then begin

     M:=x mod 10;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if (M < x) and (x mod 2 = 0) then begin

     M:=x mod 10;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 10.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if (M < x) and (x mod 2 = 1) then begin

     M:= (x mod 10) * 2;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 28.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 0 do begin

   L:=L+1;

   if M < x then begin

     M:= M + (x mod 10) * 2;

   end;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 72.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 14.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 36.

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.

  1.  (Д.Ю. Мельникова, г. Саратов) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите набольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 24.

var x, a, b : integer;

begin

 readln(x);

 a := 0; b := 1;

 while x > 0 do begin

   a := a + 1;

   b := b * (x mod 8);

   x := x div 8;

 end;

 writeln(a); write(b);

end.

  1.  (Д.Ю. Мельникова, г. Саратов) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 10.

var x, a, b : integer;

begin

 readln(x);

 a := 0; b := 1;

 while x > 0 do begin

   a := a + 1;

   b := b * (x mod 8);

   x := x div 8;

 end;

 writeln(a); write(b);

end.

  1.  (Д.Ю. Мельникова, г. Саратов) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 6.

var x, a, b : integer;

begin

 readln(x);

 a := 0; b := 1;

 while x > 0 do begin

   a := a + 1;

   b := b * (x mod 6);

   x := x div 6;

 end;

 writeln(a); write(b);

end.

  1.  (Д.Ю. Мельникова, г. Саратов) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 9.

var x, a, b : integer;

begin

 readln(x);

 a := 0; b := 1;

 while x > 0 do begin

   a := a + 1;

   b := b * (x mod 5);

   x := x div 5;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 21.

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.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 35.

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.

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

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=9;

 while x > 5 do begin

   L:= L + 1;

   if M > (x mod 10) then M:= x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

 readln(x);

 L:=0; M:=0;

 while x > 5 do begin

   L:= L + 1;

   if M < (x mod 10) then M:= x mod 10;

   x:= x div 10;

 end;

 writeln(L); write(M);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 6, а потом 5.

var x, a, b: integer;

begin

 readln(x);

 a:=0; b:=0;

 while x>0 do begin

   a:= a + 2;

   b:= b + (x mod 10);

   x:= x div 10;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 8, а потом 19.

var x, a, b: integer;

begin

 readln(x);

 a:=0; b:=0;

 while x>0 do begin

   a:= a + 2;

   b:= b + (x mod 10);

   x:= x div 10;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записан алгоритм. После выполнения алгоритма было напечатано 3 числа. Первые два напечатанных числа – это числа 7 и 42. Какое наибольшее число может быть напечатано третьим?

var x, y, z: integer;

   r, a, b: integer;

begin

 readln(x, у);

 if у > x then begin

   z:= x; x:= у; у:= z;

 end;

 a:= x; b:= y;

 while b > 0 do begin

   r:= a mod b;

   a:= b;

   b:= r;

 end;

 writeln(a);

 writeln(x);

 write(у);

end.

  1.  Ниже записан алгоритм. После выполнения алгоритма было напечатано 3 числа. Первые два напечатанных числа – это числа 13 и 65. Какое наибольшее число может быть напечатано третьим?

var x, y, z: integer;

   r, a, b: integer;

begin

 readln(x, у);

 if у > x then begin

   z:= x; x:= у; у:= z;

 end;

 a:= x; b:= y;

 while b > 0 do begin

   r:= a mod b;

   a:= b;

   b:= r;

 end;

 writeln(a);

 writeln(x);

 write(у);

end.

  1.  Ниже записан алгоритм. Укажите наименьшее из таких чисел N, при вводе которых алгоритм напечатает 17.

var N, q, i: integer;

begin

 read(N);

 for i:=1 to N-1 do begin

   if N mod i = 0 then q:=i

 end;

 write(q)

end.

  1.  (http://ege.yandex.ru) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите, сколько есть таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 12.

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.

  1.  (http://ege.yandex.ru) Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из чисел , при вводе которых алгоритм печатает сначала 2, а потом 8.

var x, a, b: integer;

begin

 readln(x);

 a:=0; b:=0;

 while x > 0 do begin

   a:= a + 1;

   b:= b + (x mod 100);

   x:= x div 100;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее  из чисел , при вводе которых алгоритм печатает сначала 2, а потом 8.

var x, a, b: integer;

begin

 readln(x);

 a:=0; b:=1;

 while x > 0 do begin

   a:= a + 1;

   b:= b * (x mod 100);

   x:= x div 100;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее  из чисел , при вводе которых алгоритм печатает сначала 14, а потом 6.

var x, a, b, c: integer;

begin

 readln(x);

 a := 0; b := 10;

 while x>0 do begin

   с := x mod 10;

   a := a+c;

   if c<b then b := c;

   x := x div 10;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее  из чисел , при вводе которых алгоритм печатает сначала 15, а потом 5.

var x, a, b, c: integer;

begin

 readln(x);

 a := 0; b := 10;

 while x>0 do begin

   с := x mod 10;

   a := a+c;

   if c<b then b := c;

   x := x div 10;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее  из чисел , при вводе которых алгоритм печатает сначала 13, а потом 3.

var x, a, b, c: integer;

begin

 readln(x);

 a := 0; b := 10;

 while x>0 do begin

   с := x mod 10;

   a := a+c;

   if c<b then b := c;

   x := x div 10;

 end;

 writeln(a); write(b);

end.

  1.  Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее  из чисел , при вводе которых алгоритм печатает сначала 19, а потом 4.

var x, a, b, c: integer;

begin

 readln(x);

 a := 0; b := 10;

 while x>0 do begin

   с := x mod 10;

   a := a+c;

   if c<b then b := c;

   x := x div 10;

 end;

 writeln(a); write(b);

end.

1 Источники заданий:


Авторские разработки.


Тренировочные и диагностические работы МИОО.


Путимцева Ю.С. Информатика. Диагностические работы в формате ЕГЭ 2012. М.: МЦНМО, 2012.

 28 http://kpolyakov.spb.ru




1. задание Д 6Особенности чертежа проецирующих прямых
2. тема регулирующая международные отношения между государствами совокупность международных отношений и ди
3. Доставка товара в концепции логистики
4. И PUSH PUSH opernd onto stck Размещение операнда в стеке Схема команды-
5. Совокупный спрос ~ совокупное предложение как базовая модель макроэкономического равновесия План сем
6. Доклад- Импрессионизм
7. тематических и естественно научных дисциплин ОТЧЕТ По учебноознакомительной практике Ст
8. Валютный риск в деятельности банковской системы
9. Ее поверхность обладает разнообразием цветовой палитры текстур и фактурных рисунков
10.  2012 року РОБОЧА ПРОГРАМА НАВЧАЛЬНОЇ ДИСЦИПЛІНИ 12
11. Уреиды как зеркало эволюции.html
12. лекція тварин Автореферат дисертації на здобуття наукового ступеня кандида
13. Коллекция легенд об основании Москвы
14. На пятьдесят оттенков темнее вторая книга трилогии Э Л Джеймс Пятьдесят оттенков которая стала бестсе
15. Критерии культуры научного стиля речи
16. С.Ю. Потапов - Энергия вращени
17. на тему- Государственный долг РФ Выполнила -
18. ТЕМА- Что нужно знать проходя испытания Проблемы которые мы встречаем
19. Сравнительный анализ концепций психологического консультирования
20. Контрольная работа- Особенности производства по делам о преступлениях несовершеннолетних