2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4, 5  След.
 
 Подсчет количества цифр в записи числа
Сообщение23.01.2008, 17:06 
Аватара пользователя


05/02/06
387
Здравствуйте!
У меня такой вопрос: имеется ли общая формула для подсчета количества одинаковых цифр в записи целого числа представленного в позиционной системе счисления?
Допустим число 23412 в десятичном виде имеет две двойки, все остальные цифры встречаются один раз, тоже самое число в двоичной записи это 101101101110100, где количество единиц - 9, а количество нулей - 6.
Таким образом число переменных на выходе функции определяется числом позиций в представлении, не проблема написать программу для ее вычисления, но очевидных закономерностей в результатах не наблюдается.

 Профиль  
                  
 
 
Сообщение23.01.2008, 22:03 
Модератор
Аватара пользователя


11/01/06
5702
Ну, наример, вот так выражается количество $b$-ичных цифр $d\ne 0$ в числе $n$:

$$\sum_{k=0}^{\infty} \delta_{d,\left( \left\lfloor \frac{n}{b^k}\right\rfloor \bmod b\right)},$$

где $\delta_{i,j}$ - дельта Кронекера.

 Профиль  
                  
 
 
Сообщение23.01.2008, 23:42 
Аватара пользователя


05/02/06
387
насколько я понял d - это основание системы счисления, тогда зачем индексы i,j
можно пожалуйста ссылку на источник, наверное в нем я и найду название проблемы на английском

 Профиль  
                  
 
 
Сообщение24.01.2008, 00:07 
Модератор
Аватара пользователя


11/01/06
5702
Нет. Основание системы - это $b$, а $d$ - это цифра количество вхождений которой в запись $n$ в $b$-ичной системе счисления мы подсчитываем.
$i,j$ - это вообще говоря абстрактные числа, для наших слагаемых мы имеем $i=d$ и $j=\left\lfloor \frac{n}{b^k}\right\rfloor \bmod b$.

 Профиль  
                  
 
 
Сообщение24.01.2008, 00:35 
Аватара пользователя


05/02/06
387
OK, тогда почему k от 0 до бесконечности, ведь число позиций заданно?
Eще вопрос - а имеется ли действительно ограничение на основание системы счисления, скажем если оно будет -2 или 3, но (-1,0,1)?
Учитывает ли формула знак входящей в представление цифры?
Имеется ли обобщение формулы для случая когда требуется узнать "суммарное число вхождений" на некотором интервале, скажем от [1, N]?
Напомните пожалуйста что такое mod B ? (уж не остаток ли от деления)
P.S. Хочется все таки ссылочку на применение дельты Кронекера для таких целей.

 Профиль  
                  
 
 
Сообщение24.01.2008, 01:40 
Модератор
Аватара пользователя


11/01/06
5702
Верхний индекс можно заменить на конечное число равное длине записи числа $n$, но формально это не играет роли, так как даже при суммировании до бесконечности все, за исключением конечного числа, слагаемые равны нулю.
Основание здесь предполагается положительным, хотя можно обобщить и до отрицательного. Для положительного основания, но нестандартного набора цифр достаточно просто переопределить функцию mod (да, это взятие остатка от деления), чтобы она возращала остаток из множества цифр.

Посчет суммарного числа вхождений цифры $d\ne 0$ для интервала $[1,N]$ (обозначим эту функцию $F_{b,d}(N)$) проще осуществить рекурсивно с глубиной рекурсии пропорциональной логарифму $N$, не привлекая даже посчет вхождений для одиночного числа (хотя неявно он, конечно, присутствует). А именно, для $N=u\cdot b^m + v$, где $0<u<b$ и $0\leq v<b^m$, или другими словами $u$ - это старшая $b$-ичная цифра числа $N$, а $v$ - все остальные. Тогда
$$F_{b,d}(N) = u\cdot m\cdot b^{m-1} + F_{b,d}(v) + C,$$
где довесок $C$ определяется в зависимости от соотношения $u$ и $d$:
если $u<d$, то $C=0$;
если $u=d$, то $C=v+1$;
если $u>d$, то $C=b^m$.

 Профиль  
                  
 
 
Сообщение25.01.2008, 17:46 
Заблокирован


16/03/06

932
Простейшая задача программирования. Ничего не нужно вычислять.
Число записано цифрами, то есть символами "2436547665433234589"
В какой форме выдать результат сортировки?Столбиком или строкой?
Нужен фрагмент программы сортировки или готовая программа?
Если для практических целей, то можно воспользоваться электронной таблицей MsExcel из пакета MsOffise - там есть в меню "сортировка".
Если программа нужна, то алгоритм прост.
1.Дана строка символов
2. Вычисляется длина строки Н (функция есть такая)
3. Задаем десять строковых переменных "0", "1", ...."9"
4 Цикл от 1 до Н
5.цикл от 0 до 9
проверяем поочередно каждый символ строки и сцепляем его с одной из строковых переменных, с которой совпадет очередной символ.
Конец цикла 5
Конец цикла 4
Вывод на печать десяти переменных. их длину (функция есть такая) )
Всё.

Добавлено спустя 8 минут 48 секунд:

Как видим, программа годится для систем счисления при основаниях от 2 до 10. Если, например, сортируем двоичную запись, то иметь в виду только количества нолей и единиц, остальные переменные покажут ноль.
Если нужно сортировать 16-ричное число, то в начале программы добавить еще 6 переменных от "А" до "F".

Добавлено спустя 15 минут 18 секунд:

Еще проще это делать в MsWord. копируем запись числа на лист, вызываем пункт меню "Поиск" , там вводим в окошко "3", щелкаем "искать все" - выдаст количество троек в записи числа.
Подобным образом считаем все остальные цифры.

 Профиль  
                  
 
 
Сообщение25.01.2008, 18:42 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Архипов,
Вы лишь подтвердили, что

Alik писал(а):
не проблема написать программу для ее вычисления


Написать программу - банально, небанально получить какой-либо теоретический результат. Допустим, не переводя число в другую систему счисления, по некоторой формуле ответить на вопрос. Автор спрашивал именно об этом.

 Профиль  
                  
 
 
Сообщение25.01.2008, 20:57 
Аватара пользователя


05/02/06
387
PAV, спасибо за понимание :)
Сейчас меня интересует частный случай:
подсчет числа вхождений "1" и "-1" (знаки не различаются) в троичной сбалансированной записи {-1, 0, 1} числа n.
Вернее даже суммарный взвешенный показатель определяемый для интервала [1, N] как
$$\sum_{i}\\floor(\( \left\frac{x[i]}{[i+1]}\right\right)})$$, где x - найденное число вхождений, i - количество позиций, floor - округление до наименьшего целого.
Для примера: имеются числа от 1 до N, записанные в троичной системе, для простоты ограничимся тремя позициями (p=3).
Такая запись представляет собой таблицу 3 столбика на 3^3 (27) строчек, для каждой строчки мы считаем ненулевые элементы.
Ниже представлены результаты
Код:
1   2   3 
6   12   8

как видно полных строчек в таком разложении 8, теперь это число нужно разделить на (3+1) и взять наименьшее целое.
Тоже самое для 6/(1+1) и 12/(2+1), в результате получим 3+4+2=9.
Почему я спрашиваю про формулу - мне надо показать, что вне зависимости от p эта сумма всегда больше чем 2^p

 Профиль  
                  
 
 
Сообщение28.01.2008, 20:48 
Аватара пользователя


05/02/06
387
Появилась следующая идея - если записать числа от 1 до 27 в троичной системе (1, 2, 3), а потом вычесть из разрядов 2,
то получим сбалансированную "перепутанную" запись (-1, 0, 1), где количество нулей будет равно количеству двоек в исходной.
Таким образом задачу можно свести к последовательности
A081603 "Number of 2's in ternary representation of n."
http://www.research.att.com/~njas/sequences/A081603
Но это не очень поможет, поскольку не указана общая формула и мы пойдем другим путем
A005836: Numbers n such that base 3 representation contains no 2.
a(2n)=3a(n), a(2n+1)=a(2n)+1
http://www.research.att.com/~njas/sequences/A005836
пока размышляю что это может дать

 Профиль  
                  
 
 
Сообщение28.01.2008, 21:08 
Модератор
Аватара пользователя


11/01/06
5702
Alik писал(а):
Появилась следующая идея - если записать числа от 1 до 27 в троичной системе (1, 2, 3), а потом вычесть из разрядов 2,
то получим сбалансированную "перепутанную" запись (-1, 0, 1), где количество нулей будет равно количеству двоек в исходной.
Таким образом задачу можно свести к последовательности
A081603 "Number of 2's in ternary representation of n."

А также к тому рекурсивному алгоритму/формуле вычисления $F_{3,d}$, что я указал выше. Чем она вас не устраивает?

 Профиль  
                  
 
 
Сообщение28.01.2008, 23:24 
Аватара пользователя


05/02/06
387
У меня давно все посчитанно, может быть не оптимально, но вполне устраивает. Единственная проблема - это то, что MATLAB отказывается считать для матриц больше чем 13 х (3^13), памяти говорит не хватает, ну и ладно. Для этих расчетов мое предположение работает, вопрос: а верно ли оно всегда?

 Профиль  
                  
 
 
Сообщение29.01.2008, 08:33 
Модератор
Аватара пользователя


11/01/06
5702
Alik писал(а):
У меня давно все посчитанно, может быть не оптимально, но вполне устраивает. Единственная проблема - это то, что MATLAB отказывается считать для матриц больше чем 13 х (3^13), памяти говорит не хватает, ну и ладно. Для этих расчетов мое предположение работает, вопрос: а верно ли оно всегда?

О каких матрицах и о каком предположении идет речь?

 Профиль  
                  
 
 
Сообщение30.01.2008, 20:49 
Аватара пользователя


05/02/06
387
Предположение о том, что суммарный взвешенный показатель (см. три поста вверх) всегда больше чем 2^p

 Профиль  
                  
 
 
Сообщение30.01.2008, 23:03 
Заслуженный участник


22/01/07
605
Требуемая величина равна
$$
\sum_{k=1}^p\left[\frac{2^k C_p^k}{k+1}\right].
$$
Она не меньше, чем
$$
\sum_{k=0}^p\left \frac{2^k C_p^k}{k+1}\right -(p+1)=\int_0^1(1+2x)^p dx-(p+1)=
\frac{3^{p+1}-1}{2(p+1)}-(p+1).
$$
Для очень маленьких $p$ ты уже проверил :D, а для $p>10$ очевидно, что последнее выражение больше, чем $2^p$.

Вот только интересно, эта задача имеет какой-либо смысл, или она типа олимпиадной?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3, 4, 5  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group