Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Делимость и сумма цифр числа 
:(
    Опции темы
Assasin92
Дата 27.2.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2010

Репутация: нет
Всего: нет



Здравствуйте.  Есть задача: на вход поступают числа A, B, S, T, k, где
1 <= A, B <= 10^19;
1 <= S, T <= 162;
2 <= k <= 100.
Нужно найти все числа, которые находятся на интервале [A, B], имеют сумму цифр, принадлежащих интервалу [S, T] и в то же время делятся на k без остатка.

Можно, конечно, перебирать все числа, делящиеся на k и смотреть сумму их цифр, но это будет очень долго. Поэтому хочу спросить, можно ли как-то связать сумму цифр с делимостью на k, или хотя бы считать сумму цифр не применяя всё время функцию, которая находит эту сумму вычисляя остаток от деления числа на степени 10?
PM MAIL   Вверх
Akina
Дата 27.2.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Assasin92 @  27.2.2012,  17:54 Найти цитируемый пост)
можно ли как-то связать сумму цифр с делимостью на k

В общем случае нет.
Цитата(Assasin92 @  27.2.2012,  17:54 Найти цитируемый пост)
считать сумму цифр не применяя всё время функцию, которая находит эту сумму вычисляя остаток от деления числа на степени 10?

Применяя методы работы, используемые в примитивных реализациях длинной арифметики (хранить число как поразрядный массив цифр), можно сильно ускорить процесс.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Assasin92
Дата 27.2.2012, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2010

Репутация: нет
Всего: нет



Цитата(Akina @  27.2.2012,  17:02 Найти цитируемый пост)
Применяя методы работы, используемые в примитивных реализациях длинной арифметики (хранить число как поразрядный массив цифр), можно сильно ускорить процесс.

Да, знаю, но на тест даётся всего 1 секунда. Даже если использовать длинную арифметику такой скорости работы не добиться.

А может можно за одну-две итерации найти сумму цифр следующего числа, принадлежащего [S, T], зная сумму цифр предыдущего с суммой цифр из этого же отрезка? То есть, например, если взять промежуток от 17 до 26:

17:
089, 098; //2 числа
179, 188, 197; //3 числа
269, 278, 287, 296; //4числа
и т. д.
18:
99; //новый
189, 198; //2 числа с суммой цифр 17, к которым я добавил 1 в разряд сотен
279, 288, 237; //3 числа -//-
339, 378, 387, 396; 4 числа -//-

Есть сложности при переходе на старший разряд(есть условия, когда добавление единицы даст число с меньшей суммой + если интервал меньше n*3 и больше (n+k) * 3, то тоже не понятно, как действовать при подобном быстром поиске суммы цифр числа).
PM MAIL   Вверх
Akina
Дата 27.2.2012, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Assasin92 @  27.2.2012,  18:49 Найти цитируемый пост)
 на тест даётся всего 1 секунда

a=1
b=10^19
s=1
t=162
k=2
Даже при всей очевидности ответа 1 секунды не хватит не то что на вывод - даже на безалгоритмическую генерацию 5*10^18 чётных чисел.
Можете смело говорить, что с учётом ограничения по времени в общем случае задача не решается.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Assasin92
Дата 27.2.2012, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2010

Репутация: нет
Всего: нет



Извиняюсь, надо найти не конкретно числа, а их количество.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.