Skip to content
Related Articles

Related Articles

GATE | GATE CS 2013 | Question 31
  • Difficulty Level : Medium
  • Last Updated : 17 Oct, 2013

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) A
(B) B
(C) C
(D) D

Answer: (B)


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
Recommended Articles
Page :