Пройтись по всем надмаскам
Difference between ru2 and ru3, changed 0 character(s)
В [этой](https://mirror.codeforces.com/blog/entry/45930?locale=ru) теме описано, как пройтись по всем подмаскам данной маски без дополнительных памяти и времени. Мне стало нужно сделать то же самое для надмасок, но я не нашёл ничего подобного. Исходя из формулы `mask ^ (~mask) = -1`, мой брат сгенерировал следующий код:↵

~~~~~↵
    for (int over = (1 << n) - 1; over > 0; over = ((over - mask - 1) & ~mask) + mask) {↵
        cout << over << " ";↵
    }↵
~~~~~↵

Это и правда работает. Но нельзя ли это как-то упростить, чтобы было легче вспомнить это на контесте?

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English rembocoder 2020-10-26 23:42:03 5
en2 English rembocoder 2020-02-11 20:38:05 3 Tiny change: ') thread is shown ' -> ') thread it is shown ' (published)
ru3 Russian rembocoder 2020-02-11 20:36:28 0 (опубликовано)
en1 English rembocoder 2020-02-11 20:35:00 574 Initial revision for English translation (saved to drafts)
ru2 Russian rembocoder 2020-02-11 20:31:19 15 Мелкая правка: 'в [этой](ht' -> 'В [этой](ht'
ru1 Russian rembocoder 2020-02-11 20:28:40 597 Первая редакция (сохранено в черновиках)