---
# System prepended metadata

title: '4'

---

# 4
Cho dãy số nguyên dương $a_1, a_2, \ldots,a_n$. Hãy đếm xem có bao nhiêu cách chọn ra $k$ phần tử từ dãy số trên để các phần tử tạo thành một số nguyên dương chia hết cho 4.

### Input
- Dòng 1 $n\ k$ ($1 \leq k \leq n \leq 2000$)
- Dòng 2 $a_1,a_2,\ldots,a_n$

### Output
- Số cách chọn thoả mãn sau khi modulo cho $10^9+7$

## Solution
Nhắc lại dấu hiệu chia hết cho $4$: Một số chia hết cho $4$ khi và chỉ khi hai chữ số cuối cùng của số đó chia hết cho $4$.

### Trường hợp 1: Tồn tại phần tử nguyên dương $< 10$
- Ta chỉ xét các phần tử $2$, $4$, $6$, $8$;
    - Với phần tử $2$, $6$: Chỉ nối được với các phần tử có chữ số cuối cùng là chữ số lẻ (phần tử lẻ)
    - Với phần tử $4$, $8$: Chỉ nối được với các phần tử có chữ số cuối cùng là chữ số chẵn (phần tử chẵn) (không tính phần tử đang chọn)
- Sau đó bốc đại ra $k-2$ phần tử còn lại là xong.

### Trường hợp 2: Đối với các phần tử $\geq 10$
- Bốc đại một phần tử chia hết cho $4$, sau đó bốc đại thêm $k-1$ (vì đã bốc trước một số chia hết cho $4$ rồi) phần tử còn lại, rồi hoán vị $k-1$ phần tử đó (vì tính chất của số chia hết cho $4$ nên ta chỉ xét hai chữ số cuối cùng và các chữ số còn lại không ảnh hưởng gì)

### Xây dựng công thức
#### Trường hợp 1
Đối với trường hợp 1: Đối với trường hợp $1$, ta lại chia ra tiếp hai trường hợp con:
- Phần tử bốc được là $2$ hoặc $6$;
- Phần tử bốc được là $4$ hoặc $8$.

Đối với trường hợp phần tử bốc được là $2$ hoặc $6$: Bốc đại thêm một phần tử có đuôi là chữ số lẻ (số lẻ)

Đối với trường hợp phần tử bốc được là $4$ hoặc $8$: Bốc đại thêm một phần tử có đuôi là chữ số chẵn (số chẵn) (không tính phần tử đang chọn)

Sau khi bốc xong, bốc thêm $k-2$ phần tử bất kỳ trong số $n-2$ phần tử còn lại.

Áp dụng công thức cộng và công thức nhân ta có:
$$T_1=\left(C^1_{hs}\times C^1_{od} + C^1_{bt} \times \left(C^1_{ev}-1\right)\right)\times \left[ C^{k-2}_{n-2}\times (k-2)! \right]$$

#### Trường hợp 2
Đối với với trường hợp 2: Đối với các phần tử $\geq 10$, ta chỉ cần bốc đại ra một số $\geq 10$ chia hết cho $4$, sau đó bốc đại ra $k-1$ phần tử trong số $n-1$ phần tử còn lại rồi hoán vị chúng là xong.

Áp dụng công thức cộng và nhân ta có:

$$T_2 = C^1_{x}\times C^{k-1}_{n-1}\times (k-1)!$$

Theo công thức cộng ta có: $$T=T_1+T_2$$

### Hướng dẫn code
- Để dễ hình dung khi code, công thức được tóm lại như sau:

$$T=\left(hs\times od + bt\times (ev-1)\right)\times \dfrac{(n-2)!}{(k-2)!\times (n-k)!}+x\times \dfrac{(n-1)!}{(k-1)!\times (n-k)!}\times(k-1)!$$

trong đó:
- $hs$ là số lượng phần tử $2$ và $6$ trong dãy;
- $od$ là số lượng phần tử lẻ trong dãy;
- $bt$ là số lượng phần tử $4$ và $8$ trong dãy;
- $ev$ là số lượng phần tử chẵn trong dãy;
- $x$ là số lượng phần tử lớn hơn hoặc bằng $10$ và chia hết cho $4$

Áp dụng công thức mod vào nữa là xong.