---
# System prepended metadata

title: Editorial bài 12-15

---

# Editorial bài 12-15
1. Bài 12 
    1. Ta sử dụng kĩ thuật 2 con trỏ cho bài này
    2. Tư tưởng là sẽ chạy con trỏ trái(gọi là i) số 1 và con trỏ phải (gọi là j) sẽ ở số n và tăng dần i lên đến khi i==j
    3. Nếu i+j<=n thì ta ans+=j-i,ngược lại thì giảm j xuống 1 đơn vị
    4. ĐPT sẽ là O(T*K), Với C++ thì rất dễ chứ Python thì hên xui tùy vào độ mạnh của máy chấm
    5. Code: 
    ![](https://i.imgur.com/dJZ1YHR.png)
2. Bài 13
    1. Với bài này cần 1 tí kiến thức về đệ quy
    2. Để ý rằng với input là 11 thì sẽ ra 744 với theo dạng (11-1) % 2==0 in ra 4, (11/2(=5) -1) % 2 ==0 in ra 4, (5/2 (=2) -1) %2 ==1 nên ta sẽ đc 447, bây giờ ta chỉ cần đảo ngược xâu là được
    3. ĐPT O(T*log2(n)), cũng như bài 12 khá là hên xui với Python tùy vào độ mạnh máy chấm
    4. Code:
        ![](https://i.imgur.com/h4tUpDB.png)
3. Bài 14
    1. Khá là bất ngờ khi bài này thật ra là bài dễ nhất khi không cần đụng đến kiến thức nâng cao
    2. Nhìn vào đề ta thấy được là X sẽ nhân 2 lên trước rồi mới đến Y
    3. Nếu xét kĩ ta sẽ nhận ra được là với X sẽ là X *2 *2 *2 *2, Y *2 *2 *2 *2 với n chẵn, X *2 *2 *2 *2 và Y *2 *2 *2 với n lẻ
    4. Dù cái nào có là max thì chia nhau sẽ loại trừ các số 2 đi trước
    5. Vậy chỉ cần xét xem nếu n là chẵn hay lẻ thì tiếp tục bài toán
    6. Nếu n lẻ sẽ là max(X *2,Y)/min(X *2,Y)
    7. Ngược lại sẽ là max(X,Y)/min(X,Y)
    8. ĐPT O(T) Với python thì ĐPT này ko cao
    9. Code:
    ![](https://i.imgur.com/pcGr92u.png)
4. Bài 15
    1. Về phần tìm bội các bạn chỉ cần lấy r/a-l/a (+1 thêm nếu như l % a==0)
    2. Vấn đề đặt ra là ví dụ l=5,r=25 và a=3,b=4 thì bài toán sẽ bị sai
    3. Đặt TH ví dụ cả 12 đều chia hết cho 3 và 4 thì ta lại cộng chính số 12 đi 2 lần (tương tự với số 24)
    4. Vậy ta cần tìm BCNN (bội chung nhỏ nhất) của a và b, sau đó tìm ra bài toán
    5. ĐPT O(T*log2(max(a,b))), Với python thì ĐPT này ko cao
    6. Code:
    ![](https://i.imgur.com/pW0yjzz.png)
 



 