# GATE | GATE CS 2013 | Question 31

Consider the following function:

 `int` `unknown(``int` `n) { ` `    ``int` `i, j, k = 0; ` `    ``for` `(i  = n/2; i <= n; i++) ` `        ``for` `(j = 2; j <= n; j = j * 2) ` `            ``k = k + n/2; ` `    ``return` `k; ` ` ``} `

`(A)` `(B)` `(C)` `(D)` (A) A
(B) B
(C) C
(D) D

Explanation:

Here we have to tell the value of k returned not the time complexity.

```for (i  = n/2; i <= n; i++)
for (j = 2; j <= n; j = j * 2)
k = k + n/2;
return k;
```

The outer loop runs n/2 times
The inner loop runs logn times.(2^k = n => k = logn).
Now looking at the value of k in inner loop, n is added to k, logn times as the inner loop is running logn times.
Therefore the value of k after running the inner loop one time is n*logn.
Therefore total time complexity is inner multiplied with outer loop complexity which (n for outer and nlogn for inner) n^2logn.

This solution is contributed by Parul Sharma.

Quiz of this Question

My Personal Notes arrow_drop_up
Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.