Это функция:
void f(int n)
{
for(int i=0; i<n; ++i)
for(int j=0; j<i; ++j)
for(int k=i*j; k>0; k/=2)
printf("~");
}
На мой взгляд, вычисление сложности времени в конечном итоге будет примерно таким:
log((n-1)(n-2))+log((n-1)(n-3))+...+log(n-1)+log((n-2)(n-3))+...+log(n-2)+...log(2)
Итак, я получаювременная сложность nlog(n!)
(потому что loga+logb=log(a*b)
и потому что n-1, n-2, n-3, ... каждый появляется в общей сложности n-1 раз.
Однако, правильный ответ n^2*logn
, и я понятия не имею, где моя ошибка. Может ли кто-нибудь здесь помочь?
Большое спасибо!