**HƯỚNG DẪN GIẢI TEST 45 - HSG 9 VĨNH PHÚC 2022-2023**
**BÀI 1: VIẾT RỒI XOÁ**
- Subtask 1, 2:
+ Vét cạn với mọi $a_i$
+ Duyệt $j$ từ 1 đến $i-1$: Nếu có $a_j = a_i$ tức cả hai số này đều bị xoá, ta gán lại hai số này bằng 0.
+ Đáp án: là số lượng $a_i > 0$ còn lại
- Subtask 3:
+ Nhận xét: Số nào xuất hiện số lần lẻ thì sẽ còn lại một số đó trên bảng. Ví dụ với $a = [2,3,2,3,2]$ thì sẽ còn lại 1 số 2 trên bảng.
+ Vậy nên ta sort dãy $a$ tăng dần rồi tách ra các đoạn bằng nhau liên tiếp, đoạn nào có số lượng là lẻ thì chứng tỏ còn một số này trên bảng --> ta tăng đáp án lên 1.
```python=
sắp a tăng dần
dem = 0
j = 1
for i từ 1 đến n:
nếu (i=n) or (a[i] khác a[i+1]):
m = i - j + 1
if m là số lẻ: dem += 1
j = i + 1
in ra: dem
```
**BÀI 2: LẬT KÍ TỰ**
- Vét cạn mọi vị trí $i$: ta lật để bên trái $i$ là toàn dấu '.' còn từ $i$ sang phải thì là toàn dấu '#'
- Khi đó số thao tác lật sẽ là: (số dấu # bên trái $i$) + (số dấu . bên phải $i$).
- Để tìm nhanh số dấu # và . thì duyệt $i$ là ta tăng số dấu # bên trái lên và giảm số dấu '.' từ $i$ sang phải đi.
```python=
cham = số dấu . có trong xâu s
thang = 0
ketqua = n
for i từ 1 đến n:
cham -= (s[i] = '.')
thang += (s[i]= '#')
ketqua = min(ketqua, thang + cham)
in ra: ketqua
```
**BÀI 3: KHÔNG PHẢI ƯỚC SỐ**
- Subtask 1: Tính $M$, tìm mọi ước của $M$; duyệt mọi ước $x$ của $M$ từ bé đến lớn: Nếu $x+1$ không phải là ước thì $d = x+1$ và dừng
- Subtask 2:
+ Với dữ liệu này ta phải nghĩ đến phân tích thừa số nguyên tố rồi
+ Để $d$ không phải ước của $M$ thì $d$ phải chứa thừa số nguyên tố nào đó có số mũ lớn hơn của $M$ có. Ví dụ $d=2^3$ thì không phải ước của $M = 2^2*3^7$.
+ Vậy nên ta phân tích mọi $a[i]$ ra thừa số nguyên tố, đánh dấu số lần xuất hiện của mỗi thừa số vào mảng đánh dấu.
+ Khi đó với i là nguyên tố thì: $d = min(d,$ luythua$(i, c[i] + 1))$
+ Để phân tích ra thừa số nguyên tố nhanh: Ta tạo mảng $e[i]$ lưu thừa số nguyên tố nhỏ nhất của $i$ rồi dùng mảng này để phân tích cho nhanh
+ Một lưu ý khi cài đặt: Cẩn thận tránh tràn số khi tính luỹ thừa.
- Tham khảo code pascal: https://www.diffchecker.com/OR70vlBz/