It's not really scary at all.
I thought it was cool because so many programming contest problems are dynamic programming problems, and my intended solution isn't really DP. But alas, there is a simple DP solution ;(.
There are plenty of solutions online. This one is simple/good.http://chrk.atwebpages.com/index.php?title=Test_Passing_Probability
My intended solution is basically finding the top M shortest paths in a very structured/restricted graph induced by the test questions. Anytime you pick a particular response for a question, you pay a cost that is proportional to the log of the probability of it being right. And then the cost of a set of responses(=path) is the sum of the individual costs. The independence assumptions means that all the good response sets are very related so you can explore only the best ones without suffering from the exponential explosion of brute force.