Автор | Сообщение |
|
Отправлено: 27.05.22 09:31. Заголовок: Помогите, пожалуйста. Получается ответ 176, а должно быть 19.
Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 5 3. Умножить на 3 Определите число, для получения которого из числа 1 существует 175 программ. var k:integer; function f(m,k:integer):integer; begin if k=175 then begin writeln(m);halt;end else begin f:=f(m+1,k+1); f:=f(m+5,k+1); f:=f(m*3,k+1); end; end; begin f(1,0); end.
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 3559
|
|
Отправлено: 27.05.22 09:40. Заголовок: Попробуйте так:var k..
Попробуйте так: var k: integer; function f(m, k: integer): integer; begin if m = k then f := 1 else if m > k then f := 0 else f := f(m + 1, k) + f(m + 5, k) + f(m * 3, k); end; begin var final := 1; while f(1, final) <> 175 do final := final + 1; writeln(final); end. Функция f возвращает число программ, с помощью которых можно из числа m получить число k.
|
|
|
|
Отправлено: 27.05.22 09:44. Заголовок: Спасибо!..
Спасибо!
|
|
|
|
Отправлено: 27.05.22 11:32. Заголовок: Еще раз благодарю, п..
Еще раз благодарю, поняла, что считала не количество программ, а количество команд.
|
|
|
|