1.8 #2,3,7,8,16,18,20,23,32
#2. a,b,c,f, but not d,e.
#8.
#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.