# Lời giải Nếu bạn có thắc mắc, xin hãy liên hệ với [Fanpage AC](https://fb.com/acceptoj) ## Lớp 9 ### Bài 1 #### Tag Duyệt #### Lời giải chi tiết - Duyệt qua tất cả các phần tử trong chuỗi ký tự, nếu nó thuộc đoạn ['a'..'z'] thì ta tăng biến đếm thêm $1$ #### Mã nguồn mẫu :::warning C++ : https://ideone.com/Y5MMgI Python: https://ideone.com/1r8hiJ ::: #### Độ phức tạp $O(N)$ ### Bài 2 #### Tag Sàng nguyên tố, Kiểm tra số nguyên tố, Duyệt #### Lời giải chi tiết - Sàng nguyên tố tạo trước một mảng snt[i]=0/1 tương ứng với việc i có phải là số nguyên tố hay không - Duyệt giá trị từ $2$ đến $\frac{n}{2}$, nếu $i$ và $n-i$ là số nguyên tố thì ta tăng biến đếm #### Mã nguồn mẫu :::warning C++ : https://ideone.com/7joqgm Python: https://ideone.com/n9K7cZ ::: #### Độ phức tạp $O(N\log{(\log{N})})$ ### Bài 3 #### Tag Đếm phân phối, Duyệt #### Lời giải chi tiết - Số lượng bộ tộc có $n$ người chính là số lượng người thuộc bộ tộc có $n$ người chia cho số lượng người thuộc một bộ tộc. - Ví dụ như : $4$ người đều thuộc bộ tộc có $2$ người, từ đó ta suy ra được có $2$ bộ tộc $2$ người. - Ta tạo một mảng đánh dấu số lần xuất hiện số lượng của bộ tộc. - Ta duyệt $x$ là tất cả các số lượng người mà một bộ tộc có thể và tính số bộ tộc có $x$ người. #### Mã nguồn mẫu :::warning C++ : https://ideone.com/TQpUPO Python: https://ideone.com/cpUtKH ::: #### Độ phức tạp - $O(N)$ ### Bài 4 #### Tag Tìm kiếm nhị phân, Toán, Implementation #### Lời giải chi tiết - Ta nhận thấy rằng bài toán đã đơn giản vì có giới hạn $n \leq 10^6$. Ta bắt đầu duyệt $i$ từ $1$, tăng dần và thêm vào một chuỗi nào đó cho đến khi độ dài chuỗi đó $\geq n$ và in ra. #### Mã nguồn mẫu :::warning C++ : https://ideone.com/r8tzMT Python: https://ideone.com/n5Bc5c ::: #### Độ phức tạp - $O(6N)$ ## Lớp 12 ### Bài 1 #### Tag Duyệt #### Lời giải chi tiết - Kiểm tra ước thực sự của số này có phải là ước của số kia và ngược lại #### Độ phức tạp - $O(N+M)$ #### Mã nguồn mẫu :::warning C++ : https://ideone.com/6p0HhE Python: https://ideone.com/CzJGJH ::: ### Bài 2 ### Tag Bit, backtrack #### Lời giải chi tiết - Sử dụng quay lui cơ bản với tập giá trị là ${0;1}$ #### Mã nguồn mẫu :::warning C++ : https://ideone.com/cIZmOh Python: https://ideone.com/oZCPLK ::: #### Độ phức tạp - $O(2^N)$ ### Bài 3 #### Tag Đếm phân phối, Duyệt, Toán. #### Lời giải chi tiết - Tạo mảng tiền tố 2D ngang, dọc. - Tính $D$ của tất cả các ma trận con và đánh dấu lại số lần xuất hiện $D$. - In ra $D$ lớn nhất và số lần xuất hiện của $D$ #### Mã nguồn mẫu :::warning C++ : https://ideone.com/yhZsXU Python: https://ideone.com/oZCPLK ::: Lưu ý: Python sẽ bị TLE. #### Độ phức tạp - $O(N^4)$