### [A. [GCC TRAINING 2026 — PRACTICE 1] Chữ Hoa chữ thường](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/A)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Trong bảng mã ASCII, các chữ cái in thường ('a' đến 'z') và các chữ cái in hoa ('A' đến 'Z') được sắp xếp liên tiếp nhau.↵
- Khoảng cách giữa chữ thường và chữ hoa tương ứng luôn là một hằng số: 'a' — 'A' = 32.↵
- Do đó, để chuyển một ký tự thường c thành ký tự hoa, ta chỉ cần:↵
- Lấy c — 32 (hoặc trừ đi 'a' — 'A').↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/psG4Nf)↵
↵
</spoiler>↵
↵
↵
### [B. [GCC TRAINING 2026 — PRACTICE 1] Tính tiền mua hàng](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/B)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Tổng số tiền cần thanh toán là tích giữa đơn giá và số lượng: $\text{Tổng tiền} = p \times n$.↵
- Vì $p$ là số thực nên ta dùng kiểu dữ liệu `double`, còn $n$ là số nguyên dùng kiểu `int`.↵
- Để in ra chính xác $2$ chữ số thập phân sau dấu phẩy trong C++, ta sử dụng `fixed` kết hợp với `setprecision(2)` từ thư viện `<iomanip>`.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/SODrvS)↵
↵
</spoiler>↵
↵
↵
### [C. [GCC TRAINING 2026 — PRACTICE 1] Làm tròn số](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/C)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Đề bài yêu cầu tìm hai số nguyên:↵
1. Số nguyên lớn nhất bé hơn hoặc bằng $x$: Đây chính là định nghĩa của hàm sàn (floor), ký hiệu là $\lfloor x \rfloor$. Trong C++, ta dùng hàm `floor(x)` từ thư viện `<cmath>`.↵
2. Số nguyên nhỏ nhất lớn hơn $x$: Lưu ý điều kiện là **lớn hơn hẳn** ($> x$), không phải lớn hơn hoặc bằng ($\ge x$).↵
- Ta xét số nguyên nhỏ nhất lớn hơn hoặc bằng $x$ chính là hàm trần (ceiling) $\lceil x \rceil$, tương ứng với hàm `ceil(x)`.↵
- Nếu $x$ là số nguyên (ví dụ $x = 3.0$): Số nhỏ nhất lớn hơn $x$ phải là $x + 1$ (tức là $4$). Khi đó `floor(x) = 3`, còn số tiếp theo là `floor(x) + 1 = 4`.↵
- Nếu $x$ không phải số nguyên (ví dụ $x = 3.2$): `floor(x) = 3`, và số nguyên nhỏ nhất lớn hơn $x$ là $\lceil x \rceil = 4$.↵
- Như vậy, trong mọi trường hợp, số thứ hai luôn bằng `floor(x) + 1`.↵
- Vì yêu cầu in theo thứ tự tăng dần, kết quả luôn là `floor(x)` và `floor(x) + 1` (ép về kiểu số nguyên `long long` để in không bị dính phần thập phân).↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/2K40r7)↵
↵
</spoiler>↵
↵
↵
### [D. [GCC TRAINING 2026 — PRACTICE 1] Tính toán cơ bản](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/D)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính toán và in ra $7$ kết quả lần lượt trên từng dòng:↵
1. Tổng: $A + B$↵
2. Hiệu: $A - B$↵
3. Tích: $A \times B$↵
4. Thương: $A / B$ (thực hiện phép chia số nguyên lấy phần nguyên)↵
5. Chia dư: $A \pmod B$↵
6. $A^3 = A \times A \times A$↵
7. $B^3 = B \times B \times B$↵
- **Lưu ý về kiểu dữ liệu:**↵
- Vì $A, B \le 10^6$, khi tính $A \times B$ giá trị có thể đạt tới $10^{12}$, và $A^3, B^3$ có thể đạt tới $10^{18}$.↵
- Do đó, nếu dùng kiểu `int` thông thường (chỉ chứa tối đa khoảng $2 \times 10^9$) sẽ bị tràn số. Bắt buộc phải khai báo $A$ và $B$ bằng kiểu `long long`.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/XWG0C2)↵
↵
</spoiler>↵
↵
↵
### [E. [GCC TRAINING 2026 — PRACTICE 1] Đấu bài Magic 1](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/E)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu so sánh giữa chỉ số tấn công của Lộc ($A$) và chỉ số phòng thủ của Kỳ ($D$).↵
- Theo quy tắc giao chiến giữa quái thú tấn công và quái thú phòng thủ:↵
- Nếu $A > D$: Quái thú của Kỳ bị tiêu diệt $\to$ In ra `YASS`.↵
- Nếu $A \le D$: Quái thú của Kỳ không bị tiêu diệt $\to$ In ra `NO`.↵
- Vì giới hạn $0 \le A, D \le 10000$, ta chỉ cần dùng kiểu dữ liệu số nguyên cơ bản `int` và một câu lệnh điều kiện `if-else` đơn giản.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/L2uEV9)↵
↵
</spoiler>↵
↵
↵
### [F. [GCC TRAINING 2026 — PRACTICE 1] Hình Chữ Nhật](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/F)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Đề bài yêu cầu tìm độ dài cạnh còn lại của hình chữ nhật khi biết trước độ dài 3 cạnh $a, b, c$.↵
- Một hình chữ nhật luôn có $4$ cạnh, tạo thành $2$ cặp cạnh bằng nhau từng đôi một (hai chiều dài bằng nhau và hai chiều rộng bằng nhau).↵
- Khi biết $3$ cạnh $a, b, c$, chắc chắn có ít nhất $2$ cạnh có giá trị bằng nhau. Cạnh thứ ba bị lẻ ra sẽ có độ dài bằng chính cạnh thứ tư (cạnh cần tìm).↵
- Ta sử dụng cấu trúc rẽ nhánh `if-else` đơn giản để kiểm tra từng trường hợp:↵
- Nếu $a = b$ thì cạnh còn lại là $c$.↵
- Nếu $a = c$ thì cạnh còn lại là $b$.↵
- Nếu $b = c$ (trường hợp còn lại) thì cạnh còn lại là $a$.↵
- **Độ phức tạp thời gian:** $O(1)$.↵
- **Độ phức tạp không gian:** $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/sndiMM)↵
↵
</spoiler>↵
↵
↵
### [G. [GCC TRAINING 2026 — PRACTICE 1] Cuối tháng của Nam Anh Phạm](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/G)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính tiền một lần gọi món có áp dụng giảm giá theo các ngưỡng:↵
1. Kiểm tra tính hợp lệ của dữ liệu đầu vào:↵
- Nếu mã món `code` không thuộc đoạn $[1, 5]$ hoặc số lượng `quantity <= 0`: in ra `Invalid`.↵
2. Xác định đơn giá theo `code`:↵
- Mã 1: 50.000 đồng.↵
- Mã 2: 80.000 đồng.↵
- Mã 3: 60.000 đồng.↵
- Mã 4: 70.000 đồng.↵
- Mã 5: 40.000 đồng.↵
3. Tính tổng tiền ban đầu: $\text{tổng} = \text{đơn giá} \times \text{quantity}$.↵
4. Áp dụng mức giảm giá:↵
- Nếu $\text{tổng} \ge 300.000$: giảm 10%, số tiền còn lại là $\text{tổng} \times 0.9$ (hoặc $\text{tổng} \times 90 / 100$).↵
- Nếu $150.000 \le \text{tổng} < 300.000$: giảm 5%, số tiền còn lại là $\text{tổng} \times 0.95$ (hoặc $\text{tổng} \times 95 / 100$).↵
- Nếu $\text{tổng} < 150.000$: giữ nguyên.↵
- **Lưu ý:** Các đơn giá đều là bội của 10.000 nên khi giảm 5% hay 10% kết quả luôn là số nguyên. Ta có thể dùng phép tính số nguyên `long long` để tránh sai số dấu phẩy động.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/CjskhW)↵
↵
</spoiler>↵
↵
↵
### [H. [GCC TRAINING 2026 — PRACTICE 1] Đấu Kiếm](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/H)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu xác định xem **hai đường thẳng** (chú ý là đường thẳng vô hạn kéo dài theo hai thanh kiếm, không phải đoạn thẳng) có cắt nhau hay không.↵
- Hai đường thẳng trên mặt phẳng tọa độ $2D$ sẽ:↵
- Cắt nhau khi và chỉ khi chúng **không song song** với nhau (đề bài đã đảm bảo hai đường không trùng nhau).↵
- Song song với nhau khi và chỉ khi hai vector chỉ phương của chúng cùng phương.↵
- Vector chỉ phương của đường thẳng Nam Anh là:↵
$$\vec{u_1} = (x_2 - x_1, y_2 - y_1) = (dx_1, dy_1)$$↵
- Vector chỉ phương của đường thẳng Đồng Hà là:↵
$$\vec{u_2} = (x_4 - x_3, y_4 - y_3) = (dx_2, dy_2)$$↵
- Hai vector $\vec{u_1}$ và $\vec{u_2}$ cùng phương (tức hai đường thẳng song song) khi và chỉ khi tích chéo bằng 0:↵
$$dx_1 \times dy_2 - dy_1 \times dx_2 = 0$$↵
- Do đó:↵
- Nếu tích chéo bằng $0$: hai đường thẳng song song (không cắt nhau) $\to$ In ra `DONG HA`.↵
- Nếu tích chéo khác $0$: hai đường thẳng cắt nhau $\to$ In ra `NAM ANH`.↵
- **Lưu ý kiểu dữ liệu:** Tọa độ lên tới $10^6$ nên $dx, dy$ có thể đạt $2 \times 10^6$, tích chéo có thể đạt khoảng $4 \times 10^{12}$, vì vậy cần dùng kiểu `long long` để tránh tràn số.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/XIZEhw)↵
↵
</spoiler>↵
↵
↵
### [J. [GCC TRAINING 2026 — PRACTICE 1] Đấu Kiếm 2](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/J)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính thời gian thực tế $t$ để viên đạn bay tới đầu Nam Anh sau khi chịu ảnh hưởng của thời tiết, sau đó so sánh với thời gian tối đa $s$:↵
- Ban đầu, vận tốc là $v$ và khoảng cách là $d$.↵
- Ảnh hưởng của thời tiết $w$:↵
- Nếu $w = \text{'S'}$ (Nắng): Giữ nguyên $v$ và $d$.↵
- Nếu $w = \text{'W'}$ (Gió): Vận tốc giảm $36\% \implies v_{\text{thực}} = v \times (1 - 0.36) = v \times 0.64$. Khoảng cách $d$ giữ nguyên.↵
- Nếu $w = \text{'F'}$ (Sương mù): Khoảng cách giảm $18\% \implies d_{\text{thực}} = d \times (1 - 0.18) = d \times 0.82$. Vận tốc $v$ giữ nguyên.↵
- Thời gian đạn bay thực tế là: ↵
$$t = \frac{d_{\text{thực}}}{v_{\text{thực}}}$$↵
- Để hạ gục được Nam Anh, viên đạn phải đến đích trong vòng $s$ giây, tức là $t \le s$.↵
- Thay vì chia số thực dễ gây sai số nhỏ, ta có thể so sánh: $d_{\text{thực}} \le s \times v_{\text{thực}}$ (hoặc dùng sai số $\epsilon = 10^{-9}$ khi so sánh số thực).↵
- Nếu $t \le s$: Đồng Hà hạ gục thành công $\implies$ In ra `NAM ANH DA BI HA GUc`.↵
- Nếu $t > s$: Không hạ gục được $\implies$ In ra `NAM ANH CHUA BI Ha GUC`.↵
- **Lưu ý đặc biệt:** Đề bài viết hoa/thường ở xâu kết quả rất đặc trưng (`GUc` và `Ha GUC`), cần in chính xác tuyệt đối từng ký tự.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/nJtK3w)↵
↵
</spoiler>↵
↵
↵
### [K. [GCC TRAINING 2026 — PRACTICE 1] Nam Anh và 2 chỗ đỗ bí ẩn](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/K)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu giải phương trình bậc hai $ax^2 + bx + c = 0$ với điều kiện đề bài cho trước $a \ne 0$ và phương trình luôn có nghiệm thực.↵
- Tính biệt thức $\Delta$ (delta):↵
$$\Delta = b^2 - 4ac$$↵
- Vì đề bài bảo đảm luôn có nghiệm thực nên $\Delta \ge 0$. Ta xét:↵
- Nếu $\Delta == 0$: Phương trình có nghiệm kép:↵
$$x_1 = x_2 = -\frac{b}{2a}$$↵
- Nếu $\Delta > 0$: Phương trình có $2$ nghiệm phân biệt:↵
$$x_1 = \frac{-b - \sqrt{\Delta}}{2a}, \quad x_2 = \frac{-b + \sqrt{\Delta}}{2a}$$↵
- **Sắp xếp thứ tự tăng dần:** ↵
- Lưu ý mẫu số $2a$ có thể âm nếu $a < 0$, dẫn đến công thức trên không tự động đảm bảo $x_1 \le x_2$.↵
- Cách an toàn và gọn nhất là tính ra hai giá trị $x_1, x_2$, sau đó nếu $x_1 > x_2$ thì thực hiện đổi chỗ (`swap(x1, x2)`).↵
- **Định dạng đầu ra:** Dùng `fixed` và `setprecision(6)` từ thư viện `<iomanip>` để in đúng $6$ chữ số phần thập phân.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/1r8BpP)↵
↵
</spoiler>↵
↵
↵
### [L. [GCC TRAINING 2026 — PRACTICE 1] Tọa Độ Trạm Radar Vũ Trụ](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/L)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính toán chỉ số năng lượng $P$ theo chế độ quét `type` và xác định trạng thái cảnh báo của trạm chỉ huy:↵
1. **Kiểm tra `type` hợp lệ:**↵
- Nếu `type` $\notin \{1, 2, 3, 4\}$: In ra `INVALID TYPE` và kết thúc chương trình.↵
2. **Tính giá trị $P$ theo `type`:**↵
- `type == 1`: $P = \sqrt{x_0^2 + y_0^2}$ (Khoảng cách Euclid).↵
- `type == 2`: $P = \vert{}x_0\vert{} + \vert{}y_0\vert{}$ (Khoảng cách Manhattan).↵
- `type == 3`: $P = \frac{x_0^2 + y_0^2}{\vert{}x_0 - y_0\vert{} + 1}$.↵
- `type == 4`: $P = \sqrt[3]{\vert{}x_0^3 - y_0^3\vert{}}$. Trong C++, ta dùng hàm căn bậc ba `cbrt(abs(x0*x0*x0 - y0*y0*y0))` hoặc tính lũy thừa qua `double`.↵
3. **Lưu ý về kiểu dữ liệu và tràn số:**↵
- Tọa độ $-10^6 \le x_0, y_0 \le 10^6$, nên $x_0^2, y_0^2$ có thể đạt $10^{12}$, và $x_0^3, y_0^3$ có thể đạt tới $10^{18}$. Cần dùng kiểu `double` hoặc ép sang số thực/`long long` trước khi tính toán để tránh tràn số nguyên.↵
4. **Xác định trạng thái cảnh báo theo thứ tự ưu tiên:**↵
- Nếu $x_0 = 0$ và $y_0 = 0$: In ra `BASE DEFENSE`.↵
- Ngược lại:↵
- Nếu $P < 100$: In ra `SAFE`.↵
- Nếu $100 \le P \le 10^6$: In ra `WARNING`.↵
- Nếu $P > 10^6$: In ra `DANGER`.↵
5. **Định dạng đầu ra:**↵
- Dòng 1: In giá trị $P$ làm tròn chính xác 2 chữ số thập phân (`fixed`, `setprecision(2)`).↵
- Dòng 2: In chuỗi trạng thái cảnh báo tương ứng.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/HXzwMZ)↵
↵
</spoiler>↵
↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Trong bảng mã ASCII, các chữ cái in thường ('a' đến 'z') và các chữ cái in hoa ('A' đến 'Z') được sắp xếp liên tiếp nhau.↵
- Khoảng cách giữa chữ thường và chữ hoa tương ứng luôn là một hằng số: 'a' — 'A' = 32.↵
- Do đó, để chuyển một ký tự thường c thành ký tự hoa, ta chỉ cần:↵
- Lấy c — 32 (hoặc trừ đi 'a' — 'A').↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/psG4Nf)↵
↵
</spoiler>↵
↵
↵
### [B. [GCC TRAINING 2026 — PRACTICE 1] Tính tiền mua hàng](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/B)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Tổng số tiền cần thanh toán là tích giữa đơn giá và số lượng: $\text{Tổng tiền} = p \times n$.↵
- Vì $p$ là số thực nên ta dùng kiểu dữ liệu `double`, còn $n$ là số nguyên dùng kiểu `int`.↵
- Để in ra chính xác $2$ chữ số thập phân sau dấu phẩy trong C++, ta sử dụng `fixed` kết hợp với `setprecision(2)` từ thư viện `<iomanip>`.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/SODrvS)↵
↵
</spoiler>↵
↵
↵
### [C. [GCC TRAINING 2026 — PRACTICE 1] Làm tròn số](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/C)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Đề bài yêu cầu tìm hai số nguyên:↵
1. Số nguyên lớn nhất bé hơn hoặc bằng $x$: Đây chính là định nghĩa của hàm sàn (floor), ký hiệu là $\lfloor x \rfloor$. Trong C++, ta dùng hàm `floor(x)` từ thư viện `<cmath>`.↵
2. Số nguyên nhỏ nhất lớn hơn $x$: Lưu ý điều kiện là **lớn hơn hẳn** ($> x$), không phải lớn hơn hoặc bằng ($\ge x$).↵
- Ta xét số nguyên nhỏ nhất lớn hơn hoặc bằng $x$ chính là hàm trần (ceiling) $\lceil x \rceil$, tương ứng với hàm `ceil(x)`.↵
- Nếu $x$ là số nguyên (ví dụ $x = 3.0$): Số nhỏ nhất lớn hơn $x$ phải là $x + 1$ (tức là $4$). Khi đó `floor(x) = 3`, còn số tiếp theo là `floor(x) + 1 = 4`.↵
- Nếu $x$ không phải số nguyên (ví dụ $x = 3.2$): `floor(x) = 3`, và số nguyên nhỏ nhất lớn hơn $x$ là $\lceil x \rceil = 4$.↵
- Như vậy, trong mọi trường hợp, số thứ hai luôn bằng `floor(x) + 1`.↵
- Vì yêu cầu in theo thứ tự tăng dần, kết quả luôn là `floor(x)` và `floor(x) + 1` (ép về kiểu số nguyên `long long` để in không bị dính phần thập phân).↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/2K40r7)↵
↵
</spoiler>↵
↵
↵
### [D. [GCC TRAINING 2026 — PRACTICE 1] Tính toán cơ bản](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/D)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính toán và in ra $7$ kết quả lần lượt trên từng dòng:↵
1. Tổng: $A + B$↵
2. Hiệu: $A - B$↵
3. Tích: $A \times B$↵
4. Thương: $A / B$ (thực hiện phép chia số nguyên lấy phần nguyên)↵
5. Chia dư: $A \pmod B$↵
6. $A^3 = A \times A \times A$↵
7. $B^3 = B \times B \times B$↵
- **Lưu ý về kiểu dữ liệu:**↵
- Vì $A, B \le 10^6$, khi tính $A \times B$ giá trị có thể đạt tới $10^{12}$, và $A^3, B^3$ có thể đạt tới $10^{18}$.↵
- Do đó, nếu dùng kiểu `int` thông thường (chỉ chứa tối đa khoảng $2 \times 10^9$) sẽ bị tràn số. Bắt buộc phải khai báo $A$ và $B$ bằng kiểu `long long`.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/XWG0C2)↵
↵
</spoiler>↵
↵
↵
### [E. [GCC TRAINING 2026 — PRACTICE 1] Đấu bài Magic 1](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/E)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu so sánh giữa chỉ số tấn công của Lộc ($A$) và chỉ số phòng thủ của Kỳ ($D$).↵
- Theo quy tắc giao chiến giữa quái thú tấn công và quái thú phòng thủ:↵
- Nếu $A > D$: Quái thú của Kỳ bị tiêu diệt $\to$ In ra `YASS`.↵
- Nếu $A \le D$: Quái thú của Kỳ không bị tiêu diệt $\to$ In ra `NO`.↵
- Vì giới hạn $0 \le A, D \le 10000$, ta chỉ cần dùng kiểu dữ liệu số nguyên cơ bản `int` và một câu lệnh điều kiện `if-else` đơn giản.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/L2uEV9)↵
↵
</spoiler>↵
↵
↵
### [F. [GCC TRAINING 2026 — PRACTICE 1] Hình Chữ Nhật](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/F)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Đề bài yêu cầu tìm độ dài cạnh còn lại của hình chữ nhật khi biết trước độ dài 3 cạnh $a, b, c$.↵
- Một hình chữ nhật luôn có $4$ cạnh, tạo thành $2$ cặp cạnh bằng nhau từng đôi một (hai chiều dài bằng nhau và hai chiều rộng bằng nhau).↵
- Khi biết $3$ cạnh $a, b, c$, chắc chắn có ít nhất $2$ cạnh có giá trị bằng nhau. Cạnh thứ ba bị lẻ ra sẽ có độ dài bằng chính cạnh thứ tư (cạnh cần tìm).↵
- Ta sử dụng cấu trúc rẽ nhánh `if-else` đơn giản để kiểm tra từng trường hợp:↵
- Nếu $a = b$ thì cạnh còn lại là $c$.↵
- Nếu $a = c$ thì cạnh còn lại là $b$.↵
- Nếu $b = c$ (trường hợp còn lại) thì cạnh còn lại là $a$.↵
- **Độ phức tạp thời gian:** $O(1)$.↵
- **Độ phức tạp không gian:** $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/sndiMM)↵
↵
</spoiler>↵
↵
↵
### [G. [GCC TRAINING 2026 — PRACTICE 1] Cuối tháng của Nam Anh Phạm](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/G)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính tiền một lần gọi món có áp dụng giảm giá theo các ngưỡng:↵
1. Kiểm tra tính hợp lệ của dữ liệu đầu vào:↵
- Nếu mã món `code` không thuộc đoạn $[1, 5]$ hoặc số lượng `quantity <= 0`: in ra `Invalid`.↵
2. Xác định đơn giá theo `code`:↵
- Mã 1: 50.000 đồng.↵
- Mã 2: 80.000 đồng.↵
- Mã 3: 60.000 đồng.↵
- Mã 4: 70.000 đồng.↵
- Mã 5: 40.000 đồng.↵
3. Tính tổng tiền ban đầu: $\text{tổng} = \text{đơn giá} \times \text{quantity}$.↵
4. Áp dụng mức giảm giá:↵
- Nếu $\text{tổng} \ge 300.000$: giảm 10%, số tiền còn lại là $\text{tổng} \times 0.9$ (hoặc $\text{tổng} \times 90 / 100$).↵
- Nếu $150.000 \le \text{tổng} < 300.000$: giảm 5%, số tiền còn lại là $\text{tổng} \times 0.95$ (hoặc $\text{tổng} \times 95 / 100$).↵
- Nếu $\text{tổng} < 150.000$: giữ nguyên.↵
- **Lưu ý:** Các đơn giá đều là bội của 10.000 nên khi giảm 5% hay 10% kết quả luôn là số nguyên. Ta có thể dùng phép tính số nguyên `long long` để tránh sai số dấu phẩy động.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/CjskhW)↵
↵
</spoiler>↵
↵
↵
### [H. [GCC TRAINING 2026 — PRACTICE 1] Đấu Kiếm](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/H)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu xác định xem **hai đường thẳng** (chú ý là đường thẳng vô hạn kéo dài theo hai thanh kiếm, không phải đoạn thẳng) có cắt nhau hay không.↵
- Hai đường thẳng trên mặt phẳng tọa độ $2D$ sẽ:↵
- Cắt nhau khi và chỉ khi chúng **không song song** với nhau (đề bài đã đảm bảo hai đường không trùng nhau).↵
- Song song với nhau khi và chỉ khi hai vector chỉ phương của chúng cùng phương.↵
- Vector chỉ phương của đường thẳng Nam Anh là:↵
$$\vec{u_1} = (x_2 - x_1, y_2 - y_1) = (dx_1, dy_1)$$↵
- Vector chỉ phương của đường thẳng Đồng Hà là:↵
$$\vec{u_2} = (x_4 - x_3, y_4 - y_3) = (dx_2, dy_2)$$↵
- Hai vector $\vec{u_1}$ và $\vec{u_2}$ cùng phương (tức hai đường thẳng song song) khi và chỉ khi tích chéo bằng 0:↵
$$dx_1 \times dy_2 - dy_1 \times dx_2 = 0$$↵
- Do đó:↵
- Nếu tích chéo bằng $0$: hai đường thẳng song song (không cắt nhau) $\to$ In ra `DONG HA`.↵
- Nếu tích chéo khác $0$: hai đường thẳng cắt nhau $\to$ In ra `NAM ANH`.↵
- **Lưu ý kiểu dữ liệu:** Tọa độ lên tới $10^6$ nên $dx, dy$ có thể đạt $2 \times 10^6$, tích chéo có thể đạt khoảng $4 \times 10^{12}$, vì vậy cần dùng kiểu `long long` để tránh tràn số.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/XIZEhw)↵
↵
</spoiler>↵
↵
↵
### [J. [GCC TRAINING 2026 — PRACTICE 1] Đấu Kiếm 2](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/J)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính thời gian thực tế $t$ để viên đạn bay tới đầu Nam Anh sau khi chịu ảnh hưởng của thời tiết, sau đó so sánh với thời gian tối đa $s$:↵
- Ban đầu, vận tốc là $v$ và khoảng cách là $d$.↵
- Ảnh hưởng của thời tiết $w$:↵
- Nếu $w = \text{'S'}$ (Nắng): Giữ nguyên $v$ và $d$.↵
- Nếu $w = \text{'W'}$ (Gió): Vận tốc giảm $36\% \implies v_{\text{thực}} = v \times (1 - 0.36) = v \times 0.64$. Khoảng cách $d$ giữ nguyên.↵
- Nếu $w = \text{'F'}$ (Sương mù): Khoảng cách giảm $18\% \implies d_{\text{thực}} = d \times (1 - 0.18) = d \times 0.82$. Vận tốc $v$ giữ nguyên.↵
- Thời gian đạn bay thực tế là: ↵
$$t = \frac{d_{\text{thực}}}{v_{\text{thực}}}$$↵
- Để hạ gục được Nam Anh, viên đạn phải đến đích trong vòng $s$ giây, tức là $t \le s$.↵
- Thay vì chia số thực dễ gây sai số nhỏ, ta có thể so sánh: $d_{\text{thực}} \le s \times v_{\text{thực}}$ (hoặc dùng sai số $\epsilon = 10^{-9}$ khi so sánh số thực).↵
- Nếu $t \le s$: Đồng Hà hạ gục thành công $\implies$ In ra `NAM ANH DA BI HA GUc`.↵
- Nếu $t > s$: Không hạ gục được $\implies$ In ra `NAM ANH CHUA BI Ha GUC`.↵
- **Lưu ý đặc biệt:** Đề bài viết hoa/thường ở xâu kết quả rất đặc trưng (`GUc` và `Ha GUC`), cần in chính xác tuyệt đối từng ký tự.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/nJtK3w)↵
↵
</spoiler>↵
↵
↵
### [K. [GCC TRAINING 2026 — PRACTICE 1] Nam Anh và 2 chỗ đỗ bí ẩn](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/K)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu giải phương trình bậc hai $ax^2 + bx + c = 0$ với điều kiện đề bài cho trước $a \ne 0$ và phương trình luôn có nghiệm thực.↵
- Tính biệt thức $\Delta$ (delta):↵
$$\Delta = b^2 - 4ac$$↵
- Vì đề bài bảo đảm luôn có nghiệm thực nên $\Delta \ge 0$. Ta xét:↵
- Nếu $\Delta == 0$: Phương trình có nghiệm kép:↵
$$x_1 = x_2 = -\frac{b}{2a}$$↵
- Nếu $\Delta > 0$: Phương trình có $2$ nghiệm phân biệt:↵
$$x_1 = \frac{-b - \sqrt{\Delta}}{2a}, \quad x_2 = \frac{-b + \sqrt{\Delta}}{2a}$$↵
- **Sắp xếp thứ tự tăng dần:** ↵
- Lưu ý mẫu số $2a$ có thể âm nếu $a < 0$, dẫn đến công thức trên không tự động đảm bảo $x_1 \le x_2$.↵
- Cách an toàn và gọn nhất là tính ra hai giá trị $x_1, x_2$, sau đó nếu $x_1 > x_2$ thì thực hiện đổi chỗ (`swap(x1, x2)`).↵
- **Định dạng đầu ra:** Dùng `fixed` và `setprecision(6)` từ thư viện `<iomanip>` để in đúng $6$ chữ số phần thập phân.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/1r8BpP)↵
↵
</spoiler>↵
↵
↵
### [L. [GCC TRAINING 2026 — PRACTICE 1] Tọa Độ Trạm Radar Vũ Trụ](https://codeforces.me/group/ScLsFaangZ/contest/719645/problem/L)↵
↵
<spoiler summary="Ý Tưởng">↵
↵
- Bài toán yêu cầu tính toán chỉ số năng lượng $P$ theo chế độ quét `type` và xác định trạng thái cảnh báo của trạm chỉ huy:↵
1. **Kiểm tra `type` hợp lệ:**↵
- Nếu `type` $\notin \{1, 2, 3, 4\}$: In ra `INVALID TYPE` và kết thúc chương trình.↵
2. **Tính giá trị $P$ theo `type`:**↵
- `type == 1`: $P = \sqrt{x_0^2 + y_0^2}$ (Khoảng cách Euclid).↵
- `type == 2`: $P = \vert{}x_0\vert{} + \vert{}y_0\vert{}$ (Khoảng cách Manhattan).↵
- `type == 3`: $P = \frac{x_0^2 + y_0^2}{\vert{}x_0 - y_0\vert{} + 1}$.↵
- `type == 4`: $P = \sqrt[3]{\vert{}x_0^3 - y_0^3\vert{}}$. Trong C++, ta dùng hàm căn bậc ba `cbrt(abs(x0*x0*x0 - y0*y0*y0))` hoặc tính lũy thừa qua `double`.↵
3. **Lưu ý về kiểu dữ liệu và tràn số:**↵
- Tọa độ $-10^6 \le x_0, y_0 \le 10^6$, nên $x_0^2, y_0^2$ có thể đạt $10^{12}$, và $x_0^3, y_0^3$ có thể đạt tới $10^{18}$. Cần dùng kiểu `double` hoặc ép sang số thực/`long long` trước khi tính toán để tránh tràn số nguyên.↵
4. **Xác định trạng thái cảnh báo theo thứ tự ưu tiên:**↵
- Nếu $x_0 = 0$ và $y_0 = 0$: In ra `BASE DEFENSE`.↵
- Ngược lại:↵
- Nếu $P < 100$: In ra `SAFE`.↵
- Nếu $100 \le P \le 10^6$: In ra `WARNING`.↵
- Nếu $P > 10^6$: In ra `DANGER`.↵
5. **Định dạng đầu ra:**↵
- Dòng 1: In giá trị $P$ làm tròn chính xác 2 chữ số thập phân (`fixed`, `setprecision(2)`).↵
- Dòng 2: In chuỗi trạng thái cảnh báo tương ứng.↵
- Độ phức tạp thời gian: $O(1)$.↵
- Độ phức tạp không gian: $O(1)$.↵
↵
</spoiler>↵
↵
<spoiler summary="Code">↵
↵
[Code](https://ideone.com/HXzwMZ)↵
↵
</spoiler>↵
↵



