Скоро Codeforces Round 1133 (Div. 1, Div. 2)! Регистрация здесь. ×

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

Автор atlasworld, история, 8 лет назад, По-английски

in problem 27E you are asked to find the smallest positive integer which has exactly n divisors .

how to solve it > >

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

»
8 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится +3 Проголосовать: не нравится

We denote the number of divisors of a number x, as d(x). It can be proven that d(x) = (e1 + 1)·(e2 + 1)·...·(ek + 1) , where x = p1e1·p2e2·...·pkek is the prime factorization of x.

We notice that it's optimal for p1 to be as small as it can be, so it should be equal to 2. We notice the same for p2, so it should be equal to 3. It is optimal to take the smallest possible prime every time. So we should only take the first k primes. But consider the case where ei = 1 i. We see that if we take more than pk = 41 (approximately), we are way over our limit of 1018 for our answer. So our list of primes should be up to 41.

Now we try to construct the desired number by some kind of trial-and-error. As long as we can multiply our current number with the current prime raised to some power ei, we test for this situation, going to the next prime, knowing the current number's divisors and its value. Notice that every prime should not fit more than times in some number X, and we only have about 15 primes, so operations aren't too much.

Solution link: 43224863