В предыдущем отборочном раунде Code Jam Qualification http://code.google.com/codejam/contest/dashboard?c=433101#s=a&a=0 возникла проблема, называемая Snapper Chain. Из анализа конкурсов я узнал, что проблема требует бит-трюка, например, извлечение самых правых N бит целого числа и проверка, все ли они 1. Я видел код участника (Eireksten), который выполнял указанную операцию, как показано ниже:
(((K&(1<<N)-1))==(1<<N)-1)
Я не мог понять, как это работает. Каково использование -1 в сравнении?. Если кто-то может это объяснить, это было бы очень полезно для нас, новичков. Кроме того, любые советы по выявлению таких проблем будут высоко оценены. Я использовал наивный алгоритм для решения этой проблемы и решил решить только меньший набор данных. (Для сбора большего набора данных, который должен быть отправлен в течение 8 минут, потребовалось время.). Спасибо заранее.