![]() |
|
|
![]()
|
|
| Алкоголик |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
Здраствуйте.
Интересует такой алгоритм. Дан интервал например от 1 до 10000000 нужно найти в нем количество палиндромов(чисел которые читаются справа на лево, так же как и ислева на право). Простой перебор это не интерестно и не оптимально. Что посоветуете? |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 5 Всего: 54 |
придумать формулу а принимает значения [1,9] -> 9 значений b,c, d, e,... принимают значения [0,9] -> 10 значений aa -> 9 палиндромов aba -> 9*10 = 90 палиндромов abba -> 9*10 = 90 палиндромов abcba - > 9*10*10 = 900 палиндромов abccba - > 9*10*10 = 900 палиндромов ... |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
N - количество цифр в числе, F(x) - количество палиндромов от от 10^(x-1)..10^х
тогда F(x+1)=10*F(x), х%2!=0 (поскольку abba -> abZba, Z=(0..9)) а для x%2==0 формула проста: F(x)=10^(x/2)-1 остается пройтись и сложить циклом:
вроде так... |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |