Just to illustrate why Brent's approach is so good, consider the positive approach, in which we list all the cases.
To get exactly one 1, we would need to roll 1, not-1, not-1 in some order. That gives us
1XX = (1/6) * (5/6) * (5/6) = 25/216
But this could happen in any of THREE orders: 1XX, X1X, XX1. So we have 3 * (25/216) = 75/216.
Now we consider exactly two 1s, which is basically the same idea:
11X = (1/6) * (1/6) * (5/6) = 5/216
This could happen in three orders as well (11X, 1X1, X11), so 3 * (5/216) = 15/216.
We also have exactly three ones, which is 111 = (1/6)*(1/6)*(1/6) = 1/216.
Adding these up, we have 75/216 + 15/216 + 1/216 = 91/216. Yuck!
So doing P(At least one) = 1 - P(No ones) is much more efficient.