# 2024 THT Sơn Trà bảng B ## Bài 1: $(n-1) \mod 6$ *MarkDown* ## Bài 2: Thoughts: ``` phun 2, nghỉ 1 phun 3, nghỉ 1 phun 1, nghỉ 1 phun 2, nghỉ 1 T phút đầu phun nước, x phút sau đó nghỉ Chu kỳ : T + x L = bội chung NN(T1 + x, T2 + x, T3 + x, T4 + x) BCNN = tích(a,b) / __gcd(a,b) (S + L-1) / L * L - S ``` 1. Tính chu kỳ chung $L = \text{lcm}({T_1 + x, T_2 + x, T_3 + x, T_4 + x})$ 2. Thời điểm gần nhất sau $S$ là bắt đầu của chu kỳ? Bài toán Tiểu học https://lqdoj.edu.vn/problem/22tkha1 ## Bài 3 Giá bán tối ưu là một trong các $a_i$ (among ú) ![image](https://hackmd.io/_uploads/r1ibOBs9yl.png) Hàm này hình như là convex? Thuật toán: 1. Đọc vào danh sách $a$ 2. Sắp xếp $a$ 3. Chạy `for i` và giả sử giá bán là $a_i$. Doanh thu sẽ là $a_i \times (n-i+1)$ 4. Lưu lại doanh thu max và giá tối ưu tìm được trong Bước 3 ## Bài 4 ### Sub 1: $n \le 5000$ Chạy ~~hai~~ vòng `for` để cố định giá trị $x$ từ đó suy ra $y$. Chạy `for` tới bao nhiêu? $y > x$. $y \ge x+1$ Chạy for $x$ tới khi $(x+1)^2 - x^2 > n^2$. Vì $y > x$ nên $y^2 - x^2 \ge (x+1)^2 - x^2$. Điều kiện tương đương $2x+1 > n^2$. ### Sub 2: $n \le 10^6$ $n^2 + x^2 = y^2$ $n^2 = (y-x) \times (y+x)$ $y-x < y+x \Rightarrow y-x < \sqrt{n^2} = n$. Lý do: Ta có $1\le a \le b \le n$. Có $n = a\times b \Rightarrow a^2 = a\times a \le a\times b=n$ ==> Cách làm: Chạy for giá trị $u = y-x$, chạy từ $1$ tới $n$. Nếu $n^2$ chia hết cho $u$ thì tính được $v (= y+x) = \frac{n^2}{u}$. Có $u,v$, tìm được $x$ (giải PT). Nếu có nghiệm thì cộng 1 vào đáp án ### Sub 3: $n \le 10^{12}$ > Có cần biết ước của $n$ không? > **Đề bài:** Chỉ yêu cầu đếm số lượng cặp $(x,y)$, không cần chỉ ra. Có nghiệm khi mà $(u,v)$ cùng tính chẵn lẻ + $u$ lẻ thì $v$ lẻ + $u$ chẵn thì $v$ chẵn Điều kiện: $u\times v = n^2$ **Làm sao để đếm ước?** :arrow_right: Dùng công thức đếm số ước và suy luận dựa trên dạng Phân tích Thừa số Nguyên tố của $n$. Công thức đếm ước số: - Với số $n$ được phân tích ra dạng TSNT $n=p_1^{e_1} \times p_2^{e_2} \times p_3^{e_3} \times \dots p_k^{e_k}$ - Số lượng ước là $(e_1+1) \times (e_2+1) \times (e_3+1) \times \dots (e_k+1)$ (Tích các (số mũ + 1)) ~~Trường hợp:~~ ~~- $n$ lẻ --> đáp án là số lượng ước của $n^2$ = hai lần số lượng ước của $n$, trừ 1~~ ~~- $n$ chẵn, $n = 2^k \times X \Rightarrow n^2 = 2^{2k} \times X^2$. Đáp án = số lượng ước của $X^2$ nhân $(2k-1)$~~ #### Cách làm của Python ~~Số lượng ước ít nên có thể sinh ra toàn bộ ước của $n$ mà không cần duyệt. Với mỗi ước $d$ của $n$, lấy thêm được một ước là $\frac{n^2}{d}$ của $n^2$~~