В [этой](https://codeforces.net/blog/entry/45930?locale=ru) теме описано, как пройтись по всем подмаскам данной маски без дополнительных памяти и времени. Мне стало нужно сделать то же самое для надмасок, но я не нашёл ничего подобного. Исходя из формулы `mask ^ (~mask) = -1`, мой брат сгенерировал следующий код:↵
↵
~~~~~↵
for (int over = (1 << n) - 1; over > 0; over = ((over - mask - 1) & ~mask) + mask) {↵
cout << over << " ";↵
}↵
~~~~~↵
↵
Это и правда работает. Но нельзя ли это как-то упростить, чтобы было легче вспомнить это на контесте?
↵
~~~~~↵
for (int over = (1 << n) - 1; over > 0; over = ((over - mask - 1) & ~mask) + mask) {↵
cout << over << " ";↵
}↵
~~~~~↵
↵
Это и правда работает. Но нельзя ли это как-то упростить, чтобы было легче вспомнить это на контесте?