madpsychocell
@madpsychocell
программист

Сколько вообще целых и дробных чисел с неповторяющимися цифрами существует?

Я сделал реализацию по подсчёту чисел, начиная с нуля и до 9876543210 для поиска чисел, у которых цифры в числе не повторяются и нашёл то, что уникальных чисел 8877691. Если же вычислить количество ещё и отрицательных целых чисел, - то их будет 8877691 умножить на 2 минус 1 (т.к. дважды ноль не нужен). Но меня интересует вопрос, а сколько и дробных отрицательных и положительных чисел вместе с нулём. цифры которых не могут повторятся. У меня есть возможность использовать перебор, но он займёт месяцы, есть метод перебора и делением на 10, 100, 1000 и т.д. для поиска дробных, но тут надо наверное заносить результаты в динамический список и сравнивать с повторно найденными (я не проверял!). Так сколько же чисел таких?
  • Вопрос задан
  • 839 просмотров
Пригласить эксперта
Ответы на вопрос 5
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Давайте прикинем.
Для дробных чисел, имеющих хоть один значащий разряд перед запятой и один после мы должны выбрать первую цифру из девяти (ноль исключаем), последнюю из восьми (исключаем уже выбранную и ноль), третью из восьми оставшихся, четвёртую из семи и т.д. Кроме того, точка может стоять в одной из n-1 позиций, где n - количество цифр.
Получаем:
Чисел из 10 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 * 9 = 26'127'360
Чисел из 9 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 = 23'224'320
Чисел из 8 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 7 = 10'160'640
...
Чисел из 2 цифр: 9 * 8 * 1 = 72
Просуммировав, получим 63'130'248
Добавим сюда числа вида 0.xxx. Поскольку ноль фиксирован, первую цифру после него мы можем выбрать из девяти, вторую из восьми оставшихся и так далее.
Чисел из 10 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362'880
Чисел из 9 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 362'880
Чисел из 8 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 = 181'440
...
Чисел из 2 цифр: 9
Сумма 986'409
Теперь возьмём целые числа. В первой позиции не может быть нуля, поэтому первую цифру выбираем из девяти. Вторую из девяти оставшихся, третью из восьми и т.д.
Чисел из 10 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3'265'920
Чисел из 9 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 3'265'920
Чисел из 8 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 = 1'632'960
...
Чисел из 2 цифр: 9 * 9 = 81
Чисел из 1 цифры: 9
Сумма 8'877'690
Сложим всё, добавив ноль, получим 72'994'348.
Ответ написан
GavriKos
@GavriKos
Ну по идее целые от дробных в данном случае отличаются только наличием запятой, т.к. нет никакого условия насчет повтора/неповтора в дробной части. Поэтому если у вас есть все числа целые, то из каждого легко получить все вариации дробных - количество цифр в числе - 1 (ну еще учесть ноль в начале).

Т.е. я к тому, что КОМБИНАЦИЙ цифр новых у вас не будет. Только старые комбинации +все вариации с запятой. Перебирать дробные числа не надо
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Дробные числа можно рассматривать как те-же самые целые только с множителем 10 в степени -1
и потом -2 и так далее. Результаты - объединить.
Ответ написан
@Zerg89
Ровно столько же сколько и натуральных за вычетом 0 из всей последовательности предиущего расчёта так как 0 уже расположен в начале
Ps писал человек без высшего образования

С коректировкой на перемещение запятой в каждом из оставшихся, тогда для каждого из оставшихся существует n(разрядов числа) вариций
Ответ написан
madpsychocell
@madpsychocell Автор вопроса
программист
Спасибо, в поиске всё равно ничего нет. Я пока что навалял программу, которая проходится в цикле от -9876543210 до 9876543210 с шагом в единицу и получает 10 дробных чисел делением на 10, 100, 1000 и так далее. Затем присваиваются флаги истинности, их 11 и перебор по динамическому спику в поисках всех этих 11 чисел и если есть в списке это число, то флаг ставится ЛОЖНЫЙ. Затем с каждым из 11 чисел, если они не встречались ещё в динамическом списке, происходит обработка на поиск отдельных цифр в числе с условием что подстрока с цифрой в строке удолжна удовлетворять условию: отсутствие или единичное вхождние и тогда, когда мы прошлись по условию для каждой цифры, - можно вывести на экран и записать в файл и записать в динамический список. И так для каждого из 11 чисел для каждого такта цикла. А после выхода из цикла - записывается в отдельный файл количество элементов того самого динамического списка - это и есть количество уникальных неповторяющихся чисел. Потом напишу чё у меня вышло из всего этого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы