1.8 #2,3,7,8,16,18,20,23,32

#2. a,b,c,f, but not d,e.

#8.

a. 4 -- tricky! There is no least _real_ n (anything >3 works) b. 5 c. 0 d. -1 #16. In short, since O(x) = O(x^2), f(x) = O(x) implies f(x) = O(x^2). Proceeding from the definition, though, if we have an E and a B such that |f(x)/x| < B for all x>E, then we can use the same B (and replace E by 1, if E<1) to say |f(x)/x^2| < B.

#18. 1^k + 2^k + ... + n^k < n^k + n^k + ... + n^k = n * n^k = n^{k+1}. So we can even use B=1 in this case.

#20a. First simplify to O(n^3 * log n) + O(log n * n^3), then add them together to just get O(n^3 * log n).
b. First get to O(2^n) O(3^n), then go to O(6^n).
c. Already n^2 = o(2^n), so 2^{n^2} = o(2^{2^n}). So toss out that tiny term and get O(2^{2^n}).

#32. 1*3*...*(2n-1) < 2*4*...*(2n) = 2^n n!. So O(2^n n!) is a good answer.
A lamer answer is 1*3*...*(2n-1) < (2n-1)^n, giving O((2n)^n).
A _really_ lame answer is 1*3*...*(2n-1) < 1*2*3*4*...*2n = (2n)!.
A downright feeble answer is O((2n)^(2n)). I hope nobody resorted to that.