Как работает данный код? с++
Решаю задачи из CSES Problem Set. Сразу оставлю ссылку на саму задачу, где можно найти условие и проверяющую систему: ссылка
Решил сначала задачу простым путем, просто через set<int> с удалением элементов, но на последних двух тестах получаю вердикт TIME LIMIT EXCEEDED.
Ничего не придумав, решил поискать решение в интернете, и наткнулся на вот такой код:
int n; cin>>n;
int a = 1, b = 0;
while(n > 0) {
for (int i = 2; i <= n; i+=2) {
cout<<a*i + b<<' ';
}
if (n&1) cout<<a + b<<' ', b += a;
else b -= a;
a <<= 1;
n >>= 1;
}
И вот вопрос, как работает этот код? Я несколько раз прошелся дебагером, но так ничего и не понял.