对于第 i 种金币,用 1 表示第 1 种金币的数量不合法,用 0 表示第 i 种金币数量合法,比如:0000 表示的就是 4 种金币数量都合法的情况数(这也是我们最终要求的部分),而 0100 表示的是第 2 种金币数量不合法(大于了 di 枚),其它都合法的情况数。
然后我们按照
∣A1∨A2∨A3∨A4∣
(∣A1+A2+A3+A4∣)
−(∣A1∧A2∣+∣A1∧A3∣+∣A1∧A4∣+∣A2∧A3∣+∣A2∧A4∣+∣A3∧A4∣)
+(∣A2∧A3∧A4∣+∣A1∧A3∧A4∣+∣A1∧A2∧A4∣+∣A1∧A2∧A3∣)
−∣A1∧A2∧A3∧A4∣
的顺序来推导:
| 顺序 | 1111 | 1110 | 1101 | 1100 | 1011 | 1010 | 1001 | 1000 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 | 0000 |
|---|
| +A1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| +A2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| +A3 | 3 | 3 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 1 | 0 | 0 |
| +A4 | 4 | 3 | 3 | 2 | 3 | 2 | 2 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
| −A1∧A2 | 3 | 2 | 2 | 1 | 3 | 2 | 2 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
| −A1∧A3 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
| −A1∧A4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
| −A2∧A3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 0 |
| −A2∧A4 | -1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 | 0 |
| −A3∧A4 | -2 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| +A2∧A3∧A4 | -1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| +A1∧A3∧A4 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| +A1∧A2∧A4 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| +A1∧A2∧A3 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| −A1∧A2∧A3∧A4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
题解参照自 Doubeecat大佬的博客