# 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 ![](https://i.imgur.com/OmDNX6r.png) Ý 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.