Блог пользователя kz_2

Автор kz_2, 12 лет назад, По-русски

Дается число N. Требуется найти наименьшее число меньшей N с наибольшим количеством делителей.N <= 10^16.1 и само число являются делителем.

  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

»
12 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

N <= ?

»
12 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Речь идет о простых делителях или не только? Какие ограничения на N?

Если о простых, то учитываются ли одинаковые делители как один или несколько? Если как один, берем произведение 2 * 3 * 5 * 7 * ..., если как несколько, то ответ — ближайшая снизу степень двойки

В противном случае. Если число N факторизуется как N = ax1 * bx2 * ... * zxn, то число его делителей равно (x1 + 1)(x2 + 1)..(xn + 1)

Дальше все зависит от ограничений, можно, например, сделать предподсчет, можно, что-то еще.

  • »
    »
    12 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится

    дальше понятно, что нам не имеет смысла пропускать простые, т.е. наш ответ имеет вид 2^x1 * 3^x2 * 5^x3..., дальше понятно, что x1 >= x2, x2 >= x3, ..., xn — 1 >= xn. Еще понятно, что нам хватает первых 20 простых(примерно) и что никакое простое не надо брать в степени больше чем 50(примерно). Поэтому пишем перебор. Ну там может отсек каких-нибудь добавить.

»
12 лет назад, скрыть # |
 
Проголосовать: нравится -16 Проголосовать: не нравится

1) Цикл до корня из N, находим все делители (в 2 сек должно уложиться)
2) Среди найденных делителей выделяем простые числа
3) Для каждого найденного делителя считаем количество делителей (либо в лоб, либо используя простые числа из пункта (2) и формулу из коммента ниже)

»
12 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Это боян с тимуса: http://acm.timus.ru/problem.aspx?space=1&num=1748, решается перебором с отсечениями. Текущий ответ храним как список (сколько двоек, сколько троек, сколько пятерок и т.д.), причем значения в этом списке всегда неубывают. На очередном этапе перебора добавляем к имеющемуся набору простых делителей еще один — либо такой же как последний, либо следующий.