You’re overcounting a bunch of configurations.
Suppose the 4 biography books are labelled as: (B_1, B_2, B_3, B_4)
^4 C_2 would give you any tuple from the set: \{(B_1, B_2), (B_1, B_3), (B_1, B_4), (B_2, B_3), (B_2, B_4), (B_3, B_4)\}
If you were to select 1 tuple from the above set then any of the remaining 5 (happens to be present in the ^8C_2 term) could be a pair for it.
Essentially, you’re counting something like \{B_1, B_2, B_3, B_4\} multiple times instead of just once. The example below should shed more light on what i’ve meant here if it isn’t already evident.
\rule{20cm}{0.4pt}
For example, you’re implying that these two selections are different even though they aren’t:
-
(B_1, B_2, B_3, B_4) → from the ^4C_2 term you pick (B_1, B_2) and then from the ^8C_2 term you pick (B_3, B_4)
-
(B_2, B_3, B_1, B_4) → similarly, from the ^4C_2 term you pick (B_2, B_3) and then from the ^8C_2 term you pick (B_1, B_4)
As you should be able to tell, these two are essentially the same selection with reordering (which we don’t care about).
\rule{20cm}{0.4pt}
The faster way you seek could just be: ^{10}C_4 - ^6C_4 - \left(^6C_3 \cdot ^4C_1\right) = 115
-
^{10}C_4 gives you all 4-selections you can make from 10 books
-
^6C_4 gives you all 4-selections you can make from novels alone.
-
^6C_1 \cdot ^4C_1 gives you all 4-selections you can make from 3 novels and one biography book.
This subtraction leaves you with all 4-selections you can make with at least 2 biographies (2 biographies, 3 biographies, or 4 biographies).