Заметим, что две операции типа 2 не меняют число: если было число x, то после первого вычитания получим 2 - x, после второго 2 - (2 - x) = x.
Значит, в самой короткой последовательности, которая получает 231 из числа 1, нет двух операций типа 2 подряд.
Рассмотрим самую короткую последовательность, получающую 231. Идем с конца:
231 делится на 3. Если бы последней операцией было вычитание, то на предыдущем шаге было бы -229, это число не делилось бы на 3, и получилось бы, что в последовательности два вычитания подряд, чего быть не должно. Значит, последняя операция - умножение, число на предыдущем шаге - 231 / 3 = 7777 не делится на 3, единственный вариант для предыдущего шага - получить из -75 путем вычитания-75 делится на 3, аналогично первому рассуждению это результат умножения числа -25 на 3-25 не делится на 3, оно получено из 27 путем вычитания27 делится на 3, аналогично, получено из 9 умножением9 делится на 3, аналогично, получено из 3 умножением3 могло получиться из 1 за один шаг умножением на 3.
7
Объяснение:
Заметим, что две операции типа 2 не меняют число: если было число x, то после первого вычитания получим 2 - x, после второго 2 - (2 - x) = x.
Значит, в самой короткой последовательности, которая получает 231 из числа 1, нет двух операций типа 2 подряд.
Рассмотрим самую короткую последовательность, получающую 231. Идем с конца:
231 делится на 3. Если бы последней операцией было вычитание, то на предыдущем шаге было бы -229, это число не делилось бы на 3, и получилось бы, что в последовательности два вычитания подряд, чего быть не должно. Значит, последняя операция - умножение, число на предыдущем шаге - 231 / 3 = 7777 не делится на 3, единственный вариант для предыдущего шага - получить из -75 путем вычитания-75 делится на 3, аналогично первому рассуждению это результат умножения числа -25 на 3-25 не делится на 3, оно получено из 27 путем вычитания27 делится на 3, аналогично, получено из 9 умножением9 делится на 3, аналогично, получено из 3 умножением3 могло получиться из 1 за один шаг умножением на 3.Итак, всё происходило так:
(1) 1 * 3 = 3
(1) 3 * 3 = 9
(1) 9 * 3 = 27
(2) 2 - 27 = -25
(1) -25 * 3 = -75
(2) 2 - (-75) = 77
(1) 77 * 3 = 231
сообщение об ошибке (или 900)
Объяснение:
В программе есть несколько ошибок:
- в строчке c1 = 10 вместо = должно быть :=
- в строчке write(Apb(ci,c2)*Apb(c1,c2); вместо ci видимо должно быть c1; кроме того, не хватает одной закрывающей скобки.
Если все эти ошибки исправить, получится такая программа:
program Primer;
var c1, c2: integer;
function Apb(a, b: integer): integer;
begin
Apb := a + b;
end;
begin
с1 := 10;
с2 := 20;
write(Apb(c1, c2) * Apb(c1, c2));
end.
Apb - просто функция, которая выдает сумму своих аргументов. Тогда
Apb(c1, c2) * Apb(c1, c2) = (с1 + с2) * (с1 + с2) = (10 + 20) * (10 + 20) = 900.
Это число и будет выведено на экран инструкцией write