Exercise 1

Assuming the egg is dropped form nth floor 
In case egg breaks, we move on and try remaining (n-1) floors one by one from the lowest floor.
In the worst case we have to make n trials. 
In cases the egg survives the drop, we move to (n-1) floors higher (as we have already used one attempt)
 Therefore we drop the egg next from floor n+ (n-1)
we need to repeat the above cycle as we can have two possible outcomes either the egg breaks or it survives.
Therefore our drops can be represented as 
n+(n-1)+(n-2)........
We would continue this process till the last possible floor  i.e 100
n+ (n-1) + (n-2) + ......... + 1  = 100
n(n+1)/2  = 100 ( because, sum of first n natural number is given by n(n+1)/2)
             n=13.7 
We will select the next greater integer  as number of trials would be an integer.
Hence, we begin dropping the egg from the 14th floor. In case it breaks we start from the 1st and try the remaining 13 floors one at a time.  In case, the egg survives we jump up to the 27th floor. 
We continue this till we find out solution.
Therefore,   minimum number of drops you need to make is 14.
Algorithm. (considering that original set V is stored in an array V of size n)
i.
create two temporary  arrays tempLeft and tempRight of size n                              complexity:   {O(1) }
create two variables productLeft and product Right and set them to 1
ii.  create a variable i  and set it to 0.                                                                                             complexity:  {O(n)}
set tempLeft[i]= productLeft and set tempRight[ n-1]=productRight
set productLeft=productLeft * V[i] and productRight=productRight * V[n-i]
increment the variable i
loop till the end of the array (i<n.) 
iii. create a variable j and set it to 0                                                                                                complexity:  {O(n)}  
Set tempLeft[j]=tempLeft[j]*tempRight[j]
interate the variable j
loop till the end of the array(j<n)
iv. Return tempLeft array.                                                                                                                     complexity:  {O(1)}  
Time complexity=O(1)+O(n)+O(n)+O(1)=O(n) ignoring constants .
Hence the algorithm executes in linear time.
Dry run:
Consider set v{a,b,c,d} i.e n =4  algorithm needs to find products of carnality (n-1) i.e 3
V=[a,b,c,d]     Expected output: [b.c.d,a.c.d,a.b.d,a.b.c]
i.  tempLeft=[,,,] tempRight=[,,,] productLeft=1 and productRight=1
ii. tempLeft=[1,a,a.b,a.b.c]    and tempRight=[b.c.d,c.d,d,1]
iii.tempLeft=[b.c.d,a.c.d,a.b.d,a.b.c]
iv. Return  [b.c.d,a.c.d,a.b.d,a.b.c]