2

The question is given in the following picture: enter image description here

I solved it and my answer was B, but the answer sheet said that the answer is C as you can see from the following picture:

enter image description here

I do not know why, could anyone clarify this for me please?

Emptymind
  • 1,901

3 Answers3

10

Let us consider how $(k,i,p)$ changes. You get

$$(999,1,0)\rightarrow(999,2,1)\rightarrow(999,4,2)\rightarrow(999,8,3)\rightarrow...$$

It's clear $p=2$ isn't the answer. In fact, notice that the loop just doubles $i$ and increments $p$ until $i=2^{10}\ge999>2^9$ when the loop will exit and print $p$. Notice also, that $(k,i,p)=(999,2^{p},p)$.

Hence $p=10$ when the loop exits.

Shuri2060
  • 4,353
5

Have you tried actually following those instructions as you were told to do?

Initially, k= 999, i= 1 and p= 1. Since 999> 1, we do step 3: i becomes 2i= 2 and p becomes 1+ 1= 2.

Go back to step 2: i= 2< 999 so we do step 3: i becomes 2i= 4 and p becomes 2+ 1= 3.

Go back to step 2: i= 4< 999 so we do step 3: i becomes 2i= 8 and p becomes 3+ 1= 4.

That should be enough to convince you that i is being multiplied by 2 every time so after n repetitions $i= 2^n$. And p has 1 added every time so after n steps, p= 1+ n.

Now how many times do we repeat? We repeat until $2^n< 999$. You could determine n using logrithms if you have a calculator: if $2^n= 999$ then n log(2)= log(999). 0.3010n= 2.9996. n= 2.9996/0.3010= 9.9653. Since n must be an integer, n= 10. But we want $2^n< 999$, not equal to it so n= 10- 1= 9.

Or we could just do the doubling: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. The last power of 2 less than 999 is $2^{9}= 512$.

Since n= 9, p= n+ 1= 10.

user247327
  • 18,710
2

With each execution of the loop: the value of $i$ doubles and $p$ increases by $1$. Observe that $i$ is taking values as powers of $2$ and the power is reflected in $p$. The first time $i=2^p >1000$ is when $p=10$.

Anurag A
  • 41,067