# CSES - Intro
## Increasing Array
Cứ duyệt và tăng các số từ đầu đến cuối. Nếu gặp $a_i < a_{i-1}$, tăng $a_i$ lên tới bằng $a_{i-1}$ là đủ
## Permutations
Giống dạng bài A,B div.2 Codeforces.
Một cách làm: in ra chẵn trước, lẻ sau
## Bit Strings
$2^n$, nhớ $\mod M$ cẩn thận
## Trailing Zeros
Không thể tính chính xác $n!$ và đếm chữ số $0$ vì quá chậm.
Nhận thấy, $n!$ có dạng $x \cdot 10^k$ thì sẽ có $k$ chữ số $0$
Quan tâm bậc của $2$ và $5$. (chỉ cần $5$ vì bậc $5$ chắc chắn bé hơn)
$O(n)$
Làm nhanh hơn?
### Full
```python
deg = 0
while n > 0:
deg += n/5
n /= 5
```
Giải thích:
- Đếm số lượng số chia hết cho $5$
- Đếm số lượng số chia hết cho $25 = 5^2$
- Đếm số lượng số chia hết cho $125 = 5^3$
- Đếm số lượng số chia hết cho $625 = 5^4$
- ...
## Two Knights
Toán, công thức

Ý tưởng:
- Đếm phần bù: Ta đếm số cặp vị trí ăn nhau, xong trừ ra
- Dùng kết quả của bàn cờ $(i-1) \times (i-1)$ tính cho bàn cờ $i \times i$
- Phân loại thành ba ô: Vàng chỉ ăn được 2, Đỏ ăn được 3, xanh ăn được 4.
## Two Sets
Đặt $S = 1+2+\dots+n = n(n+1)/2$.
Cần chọn ra một vài số có tổng bằng $S/2$.
Cách làm: cứ tham thôi, chọn số lớn nhất chưa chọn.