Вопрос:

Дан фрагмент алгоритма: a := x mod 10; b := x div 100; s := 0; p := 1; if (a mod 2 = 0) then s := s + a else p := p * a; if (b mod 2 = 0) then s := s + b else p := p * b; Какое наибольшее двузначное число необходимо ввести, чтобы после выполнения фрагмента алгоритма s = 0, p = 15 ?

Смотреть решения всех заданий с листа

Ответ:

Разберем алгоритм по шагам, чтобы понять, какое двузначное число нужно ввести, чтобы s = 0, а p = 15.

  1. a := x mod 10: a - это остаток от деления x на 10.
  2. b := x div 100: b - это целая часть от деления x на 100. Так как x - двузначное число, b всегда будет равно 0.
  3. s := 0: s изначально равно 0.
  4. p := 1: p изначально равно 1.
  5. if (a mod 2 = 0) then s := s + a else p := p * a: Если a четное, то к s прибавляется a, иначе p умножается на a.
  6. if (b mod 2 = 0) then s := s + b else p := p * b: Если b четное, то к s прибавляется b, иначе p умножается на b.

Так как b всегда равно 0 (двузначное число делить на 100), то условие b mod 2 = 0 всегда будет истинным (т.к. 0 делится на 2 без остатка). Значит, s := s + b всегда выполняется. Поскольку b=0, это означает, что s не изменится и останется равным 0.

Теперь рассмотрим, как получить p = 15. Это возможно, если в первом условии if (a mod 2 = 0) then s := s + a else p := p * a выполнится ветка else p := p * a, и при этом p * a = 15. Это означает, что a должно быть делителем числа 15. Возможные значения a: 1, 3, 5, 15.

Поскольку a := x mod 10, то a - это последняя цифра числа x. Значит, x должно заканчиваться на 1, 3, 5 или 15. Но 15 не подходит, так как a - это одна цифра.

Теперь нужно выбрать наибольшее двузначное число, удовлетворяющее условиям:

  • x заканчивается на 1, 3 или 5.
  • a (последняя цифра x) нечетная.

Если a = 1, то x mod 2 !=0 и p=1*1=1 != 15

Если a = 3, то x mod 2 !=0 и p=1*3=3 != 15

Если a = 5, то x mod 2 !=0 и p=1*5=5 != 15

Но нам нужно получить p=15 после двух условий. Значит, после первого условия p должно быть 3 или 5, чтобы после умножения на b=0 ничего не изменилось. Но, так как, b=0, то второе условие всегда s=s+b, а значит p не изменится.

Попробуем подобрать число x, при котором p=15 за два шага:

  • если a = 5, то чтобы получить 15 на втором шаге нужно b = 3, то есть x = 35;
  • если a = 3, то чтобы получить 15 на втором шаге нужно b = 5, то есть x = 53;

Если x = 35:

  1. a = 35 mod 10 = 5 (нечетное) => p = 1 * 5 = 5
  2. b = 35 div 100 = 0 (четное) => s = 0 + 0 = 0

Тогда p = 5, s = 0.

Если x = 53:

  1. a = 53 mod 10 = 3 (нечетное) => p = 1 * 3 = 3
  2. b = 53 div 100 = 0 (четное) => s = 0 + 0 = 0

Тогда p = 3, s = 0.

Значит, надо чтобы p увеличилось за два условия. В первом условии p = a, а во втором p = p * b.

Так как p в итоге должно быть 15, a = 5, b = 3 или a = 3, b = 5. Учитывая, что a - это последняя цифра числа x, а b - первая (умноженная на 0), то x = 35 или x = 53, но нам нужно наибольшее число, то подходит x = 53

Проверка:

  1. a = 53 mod 10 = 3;
  2. b = 53 div 100 = 0;
  3. s = 0;
  4. p = 1;
  5. a mod 2 = 3 mod 2 = 1 != 0 => p = 1 * 3 = 3;
  6. b mod 2 = 0 mod 2 = 0 == 0 => s = 0 + 0 = 0;

Все условия соблюдены.

Ответ: 53

ГДЗ по фото 📸
Подать жалобу Правообладателю