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

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

Есть задача в которой нужно посчитать некоторое значение выражения: ((kn + k^(n/2+n%2))/2)%109. Как это посчитать при ограничениях (1 ≤ n, k ≤ 109)?

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

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

Меня это бесит. Люди минусуют пост чтобы он ушел с прямого эфира, хотя никто не может написать как решать эту задачу...

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

Разложим 10^9 на простые множители. Решим это сравнение по каждому из взаимно-простых модулей, а дальше воспользуемся КТО.

Ясно, что интересен только случай, когда рассматриваемый модуль — 2(2 входит в первой степени в разложении на простые 10^9). Но тогда в этом случае нам надо лишь найти ((k^n + k^(n/2+n%2)) по модулю 4, что сделать весьма просто.

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

А я правильно понимаю, что (X / 2) % M = (X % (2*M)) / 2 ?

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

Посчитать по модулю 2·109, поделить результат на 2.

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

    А почему это правильно?

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

      Пусть мы посчитали 2x по модулю 2m, тогда мы знаем, что 2x = 2mq + r, где 0 ≤ r < 2m. Поделим всё на 2, получим x = mq + r / 2, 0 ≤ r / 2 < m, а это и означает, что остаток при делении x на m равен r / 2.