Это всего лишь проверка цикла for 1/3n раз, так что, я думаю, он все еще технически линейный? Однако я действительно не понимаю, почему это не будет O (logn), потому что много раз код с временем выполнения O (logn) заканчивается проверкой около 1/3 n. Всегда ли O(logn) каждый раз делит варианты на 2?
int a = 0;
for (int i = 0; i < n; i = i+3)
a = a+i;
;
послеi = i + 3
является синтаксической ошибкой. - person ajb   schedule 19.03.2014