int sum = 0;
for (int i = 0; i < n; i++) // Let's call this N
for (int j = 0; j < i * i; j++) // Let's call this M
for (int k = 0; k < j; k++) // Let's call this K
sum++;
N - количество шагов всей программы, M - количество шагов, которые выполняют два внутренних цикла, и, наконец, K - количество шагов, которые выполняет последний цикл.
Это просточтобы увидеть, что K = j, нужно сделать j шагов.
Then M = Sum(j=0,i^2,K) = Sum(j=0, i^2, j)
(первый параметр - итератор, второй - верхняя граница, а последний параметр - то, что мы добавляем)
На самом деле теперь это сумма из n чисел для i * i.Это означает, что мы можем применить формулу ((n + 1) * n) / 2
M = Sum(j=0,i^2,j) = ((i^2+1)*(i^2))/2 = (i^4 + i^2)/2
N = Sum(i=0, n, M) = 1/2 * ( Sum(i=0, n, (i^4)) + Sum(i=0, n, (i^2)) )
Это хорошо известные формулы, и после небольшой игры вы получите:
N = (n^5)/10 + (n^4)/4 + (n^3)/3 + (n^2)/4 + n/15
Это должно быть точное число шагов, которые делает цикл, но если вас интересует нотация O, вы можете заметить, что n ^ 5 - самая сильная растущая часть, поэтому решение O (n ^ 5)