Определить, сколько возможно построить различных программ для исполнителя, которые преобразуют число х в у - Pascal
Формулировка задачи:
У некоторого исполнителя, обрабатывающего числа, есть три команды: +1, +2, *3. Исполнитель получает на вход некоторое число и программу, представляющую собой некоторую последовательность вышеназванных команд. На выходе он выдает новое число - результат применения программы к исходному числу. Вам предлагается написать программу - анализатор данного исполнителя. На вход программе подаются два числа х и у, каждое из которых лежит в диапазоне от 0 до 200 (включая границы) и при этом гарантируется, что х меньше, либо равно у. Ваша программа должна подсчитать, сколько возможно построить различных программ для исполнителя, которые преобразуют число х в у. В качестве ответа нужно вывести одно целое число.
Буду рад оперативной помощи, заранее спасибо!
Решение задачи: «Определить, сколько возможно построить различных программ для исполнителя, которые преобразуют число х в у»
textual
Листинг программы
var x,y,vars:integer; procedure FindVariants(A, B : Integer); begin if A > B then Exit else if A = B then Inc(vars) else begin FindVariants(A +1, B); FindVariants(A +2, B); FindVariants(A *3, B); end; end; begin vars := 0; readln(x,y); FindVariants(X, Y); WriteLn(vars); end.
Объяснение кода листинга программы
- Переменные
x,yиvarsобъявлены как целочисленные типы данных. - Функция
FindVariantsпринимает два целочисленных аргументаAиB. - Внутри функции
FindVariantsвыполняется проверка условияA > B. Если это условие истинно, то функция завершается. - Если условие
A > Bложно, то проверяется условиеA = B. Если оно истинно, то значение переменнойvarsувеличивается на единицу. - Если условие
A = Bложно, то вызываются рекурсивно три раза функцииFindVariants, передавая в качестве аргументовA + 1,A + 2иA * 3. - В основной части программы считываются значения переменных
xиyс помощью функцииreadln. - Затем вызывается функция
FindVariantsс аргументамиxиy. - Значение переменной
varsвыводится на экран с помощью функцииWriteLn. - Программа завершается.