Алгоритъмът е древногръцки, не помня кой точно го е измислил, но ето каква е идеята:
Върху една окръжност на равни разстояния пореждаме n на брой точки. Номерираме ги последователно от 1 до n.
Свързваме точка 1 с точка n. Свързваме всички останали точки така, че да са успоредни на първата линия, т.е. свързваме 2 с n - 1, 3 с n - 2, 4 с n - 3 и т.н.
Ето тук изникват двата подслучая с четните и нечетните:
Ако n е нечетно, тогава винаги остава една точка, която не може да се свърже с останалите. Тази точка "почива" в този рунд. При първия рунд (наздравица), тази точка е (n + 1) / 2.
Ако n е четно, тогава след първата стъпка имаме окръжност, нарязана от n / 2 на брой хорди, разположени успоредно една спрямо друга.
Дотук беше лесното!
При втория рунд (наздравица) свързваме (1 : n - 1), (2, n - 2), (3, n - 3) и т.н. Отново възникват двата подслучая:
Ако n e нечетно, тогава във втори рунд точка n почива. В следващите рундове свързваме първо (1 : n - 2), на следващия (1 : n - 3) и т.н., докато точка 1 не изреди всички останали точки. Гледаме колко рунда сме направили и това ни е броя на наздравиците - 1. Последната наздравица е тази, при която точка 1 почива и свързваме (2 : n), (3, n - 1)... По този начин общият брой наздравици е точно числото n.
Ако n е четно, тогава се случва същото, както и при горния случай, с тази разлика, че от втори рунд нататък винаги остават две точки, които не могат да се свържат успоредно спрямо останалите. Но ако и те се свържат, тогава следвайки последователните стъпки, описани по-горе, стигаме до извода, че при четно n броят на наздравиците е n - 1.
Ха наздраве! Който успее да оптимизира кръстоската при четен брой пиячи е гений! Или просто ще ходим да пием бира винаги в нечетен брой!