Розбір
Автор та розробник: Антон Тригуб
Перш за все, відсортуємо масив позицій, в яких лежать цукерки.
Якщо , то ми завжди можемо підібрати цю єдину цукерку, і відповідь .
Якщо , то ми можемо підібрати 2 цукерки лише тоді, коли вони не сусідні. Якщо ж цукерки сусідні, то відповідь 1. Таким чином ми вирішили блок 1
.
Якщо , то відповідь "— принаймні , адже ми завжди зможемо підібрати принаймні першу та останню цукерку. Подивимось, за якої умови ми можемо підібрати всі 3 цукерки: маємо мати , для деякого . Таке знайдеться тоді й лише тоді, коли . В цьому випадку відповідь , інакше - . Таким чином ми вирішили блок 2
.
Переведемо тепер задачу на математичну мову.
Для заданого масиву чисел потрібно знайти, для якої найбільшої кількості чисел з нього існує натуральне , при діленні на яке всі вони дають однакові остачі.
Подивимось, як можна вирішити задачу для даного . Це можна зробити за , якщо замінити кожне число в масиві на його остачу за модулем , відсортувати, і знайти найпоширенішу остачу двома вказівниками проходом по масиву.
Помітимо, що в якості доцільно розглядати лише числа, що не перевищують максимального з . Таким чином ми можемо вирішити блок 3
, вирішивши задачу окремо для кожного з , і взявши максимум по цим значенням.
Для блоку 4
помітимо, що ми можемо перебирати лише прості значення (справді, якщо деякі числа дають однакові остачі при діленні на деяке складене число , то вони дають однакові остачі і при діленні на , і при діленні на ). До є порядку простих чисел - асимптотика заходить.
Тепер помітимо, що при відповідь гарантовано буде не меншою за . Таким чином, в якості нам потрібно перевірити лише прості , відповідь для яких може бути більшою за .
Припустимо, що для деякого є принаймні чисел, що дають при діленні на однакову остачу.
Для блоку 5
тепер можемо скористатись наступною хитрістю: за такої умови має справджуватись . Таким чином, ми можемо вирішити задачу за , де - кількість простих чисел, що не перевищують .
Тепер перейдемо до блоку 6
:
Припустимо, що для деякого є принаймні чисел, що дають при діленні на однакову остачу. Назвемо цю групу . Виберемо з наших чисел випадкову пару різних чисел. Імовірність того, що вони обидва потрапили в не менша за . Таким чином, пара не повністю потрапляє в з імовірністю . Виберемо випадковим чином пар. Імовірність того, що кожна не повністю потрапила в . Вірогідність дуже мала "— можна вважати, що якась пара потрапила в повністю.
Для кожної пари розглянемо всі прості дільники різниці чисел в парі. Об'єднаємо множини цих простих дільників по всім парам. З імовірністю серед них буде шукане просте . Тому можна перебрати лише прості дільники з цієї множини. Факторизацію можна провести за . Залишилося оцінити кількість різних простих дільників.
Якщо всі не перевищують , то кожна різниця не перевищує , а отже добуток різниць не перевищує . Тепер залишилось дізнатись, скільки максимум різних простих дільників може мати число порядку . Підрахунки на комп'ютері показують, що при це число буде порядку . Отже, ми можемо вирішити задачу для кожного простого числа окремо, отримавши асимптотику .