Потому что, когда вы оцениваете сложность функции, для вас важны переменные. Если вы находите какую-либо константу, вы ее откладываете.
Например:
for(int i = 0; i < 2 * N; i++){ print("Hello"); }
Ваша сложность равна O (2N), но поскольку для вас важны переменные, вы берете константы вне уравнения, оставляя O (N).
Теперь предположим, что это:
int a = b + c + d;
Сложность, очевидно, постоянна, но количество операций не только 1, скажем, это 3 (2 операции и 1 атрибуция). Тогда у вас есть O (3). Можно смело сказать, что O (3) = O (3 * N ^ 0). Мы следуем той же процедуре вырезания констант, оставляя нас с O (N ^ 0) = O (1).
Просто чтобы уточнить, когда мы оцениваем сложности, мы представляем, что переменная будет принимать очень большие значения, такие большие значения, что любая умножающая константа не будет иметь значения, когда переменная становится бесконечной, поэтому мы откладываем ее. То же самое верно для аддитивных постоянных, например, O (5N + 3) = O (N).