Вопрос № 21188: Подскажите, как определить частоту появления в числе n! цифры k (n<=100)...
Вопрос № 21188
Подскажите, как определить частоту появления в числе n! цифры k (n<=100)
Отправлен: 22.05.2005, 18:27
Вопрос задал: Lonelywolf (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Alex Diesel
Здравствуйте, Lonelywolf!<br>Ну можно попытаться посчитать число n!, а потом делить то что получиться на 10 брать остаток от деления и если этот остаток от деления равен k то увеличивать на один какой-нить счетчик. Ну еще нужно знать сколько вообще цифр в числе n!. А в конце достаточно количество цифр k разделить на общее число цифр, вот и получится частота появления. Это вариант решения который приходит в голову, если не думать.
Ответ отправил: Alex Diesel (статус: 4-ый класс)
Отправлен: 22.05.2005, 19:21
Отвечает: Master89
Здравствуйте, Lonelywolf!
Думаю, преобразовать это число в строку, а в строке произвести поиск обычным образом.
Ответ отправил: Master89 (статус: 3-ий класс)
Отправлен: 22.05.2005, 19:34
Отвечает: Snowm@n
Здравствуйте, Lonelywolf!
Нужно использовать "длинную арифметику" (то есть реализовать умножение столбиком). В приложении мой код, вычисляющий факториал, вам остается только посчитать цифры.
p.s. Цифры хранятся "пачками" по 4, без значащих нулей в массиве digit
Приложение:
Ответ отправил: Snowm@n (статус: Студент)
Отправлен: 23.05.2005, 09:02
Отвечает: sir henry
Здравствуйте, Lonelywolf!
1. Перевести число n в строку и k в символ.
2. Завести переменную под временное хранение этой строки (зачем - см далее).
3. Завести переменную-счетчик, например Kol-vo: integer;
4. С помощью функции Pos() найти позицию вхождения k в n (лучше это делать в копии, если нужно сохранить строку с n в исходном виде) и заменить символ в этой позиции чем-нибудь, например на #253. :) Затем сделать Inc(Kol-vo), если
5. Повторять пункт 4, пока функция Pos() возвращает число отличное от нуля.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 23.05.2005, 09:16