|
|
|
§ 7. Запись алгоритмов на языках программирования
7.4. Другие приёмы анализа программИзвестно, что при некотором значении х были выведены числа 5 и 25. Выясним, сколько существует разных значений х, при вводе которых может быть получен такой результат. Выясним, какие именно данные накапливаются в переменных. Начальное значение переменной х задаётся пользователем. Тип этой переменной integer, следовательно, она не может превышать 32 767. В цикле значение переменной х изменяется по правилу, заданному командой: х:=х div 10 При таком преобразовании значение переменной х уменьшается в 10 раз и дробная часть результата отбрасывается. Можно сказать, что при каждом выполнении тела цикла от значения переменной х «отсекается» одна цифра справа. Начальное значение переменной m = 0. При каждом выполнении цикла значение переменной m увеличивается на единицу. Можно сказать, что в m подсчитывается количество цифр, «отсечённых» от х. Начальное значение переменной n = 1. В цикле значение переменной n изменяется по правилу, заданному командой: n: =n*(х mod 10) Здесь х mod 10 — не что иное, как последняя цифра числа х. Таким образом, в переменной п накапливается произведение цифр числа х, взятых справа налево. Выход из цикла осуществляется при х <= 0, т. е. когда все значащие цифры этого числа будут рассмотрены. Следовательно, если на экран первой выводится цифра 5, то исходное число пятизначное. Второе число указывает на то, что 25 — это произведение всех цифр исходного числа х. Рассмотрим варианты пятизначных чисел, произведение цифр которых равно 25. Например, 11551, 51151 и т. д. Очевидно, в записи любого из таких чисел должны быть две пятёрки и три единицы. Применение известной вам формулы из комбинаторики позволяет вычислить количество разных чисел, удовлетворяющих такому условию, — это 10. О какой формуле идёт речь? Приведите эту формулу и выполните соответствующие вычисления. Укажите наибольшее и наименьшее числа, удовлетворяющие условию задачи. Выпишите все числа, удовлетворяющие условию задачи.
|
|
|