nq1s788

Получение нуля

Nov 2nd, 2025
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. Заметим, что 32768=215
  2. , а потому мы можем сделать любое значение равным 0
  3. умножив его на два 15
  4. раз, так как (𝑣⋅215)mod215=0
  5. . А потому ответ для каждого 𝑎𝑖
  6. не превосходит 15
  7. .
  8.  
  9. Далее заметим, что всегда есть оптимальный ответ, имеющий вид: сначала прибавим единицу 𝑐𝑛𝑡𝐴𝑑𝑑
  10. раз, а потом умножим на два 𝑐𝑛𝑡𝑀𝑢𝑙
  11. раз — и 𝑐𝑛𝑡𝐴𝑑𝑑+𝑐𝑛𝑡𝑀𝑢𝑙
  12. будет минимальным ответом. Другими словами, давайте просто переберем все 𝑐𝑛𝑡𝐴𝑑𝑑≤15
  13. и 𝑐𝑛𝑡𝑀𝑢𝑙≤15
  14. и проверим, что (𝑣+𝑐𝑛𝑡𝐴𝑑𝑑)⋅2𝑐𝑛𝑡𝑀𝑢𝑙mod32768=0
  15. . Ответ — это минимальное 𝑐𝑛𝑡𝐴𝑑𝑑+𝑐𝑛𝑡𝑀𝑢𝑙
  16. среди них.
  17.  
  18. Чтобы доказать, что выгодно сначала прибавлять, а только потом умножать, заметим, что невыгодно прибавлять более одного раза после умножения (𝑣→2𝑣→2𝑣+2
  19. можно заменить на 𝑣→𝑣+1→2(𝑣+1)
  20. ). А потому будет не более одного +1
  21. между двумя ⋅2
  22. . Однако, невыгодно делать +1
  23. даже один раз, потому что нам в конечном итоге нужно сделать так, чтобы 𝑣
  24. делился на 215
  25. , а +1
  26. ломает делимость.
  27.  
  28. Существуют и другие подходы к решению данной задачи: например, так как 𝑎𝑖<32768
  29. вы можете написать bfs, чтобы найти кратчайшие пути от 0
  30. ко всем 𝑎𝑖
  31. .
  32.  
  33.  
Advertisement
Add Comment
Please, Sign In to add comment