Thông tin
Sau đây là lời giải của Kỳ thi Tin học trẻ bảng B tỉnh Bà Rịa - Vũng Tàu năm học 2022 - 2023.
Bạn đọc có thể nộp và chấm bài (test tự sinh) TẠI ĐÂY.
Chuẩn bị bởi team Logica, thuộc khuôn khổ dự án The Algitect (ALGI Project)
Cho hai số nguyên dương và .
Yêu cầu: Hãy tìm số nguyên dương lớn nhất thỏa mãn chia hết cho .
Dữ liệu đảm bảo: và .
Subtasks:
Kiến thức toán học cần biết
Giả sử với là các thừa số nguyên tố của .
Khi đó, một số chia hết cho khi và chỉ khi với mọi thừa số nguyên tố của thì số cũng nhận làm thừa số nguyên tố trong đó và .
Ví dụ:
chia hết cho vì:
- Với thừa số nguyên tố , khi phân tích số và ta được số mũ .
- Với thừa số nguyên tố , khi phân tích số và ta được số mũ
Ta phân tích thừa số nguyên tố của , được các thừa số , gọi:
Để tính , ta duyệt từng số từ đến và chia số đó cho đến khi nào không chia được nữa thì dừng. bằng tổng số lần chia.
Kết quả: Giá trị nhỏ nhất của ( chia lấy nguyên cho ).
Độ phức tạp thời gian: .
Ý tưởng kế thừa từ subtask trước, tuy nhiên cần cải tiến khâu phân tích thừa số nguyên tố của
Quan sát và nhận xét
Xét và số nguyên tố . Từ đến có:
Khi đó ta nói có:
Như vậy, có thể tính nhanh số mũ của một số nguyên tố bất kỳ trong phân tích thừa số nguyên tố của bằng cách:
Và tính tổng số lượng số ở tất cả các bậc.
Công thức
Số lượng thừa số nguyên tố bậc trong phân tích thừa số nguyên tố của là:
Dễ thấy, ta chỉ có thể thực hiện chia cho tối đa trước khi kết quả của phép tính đạt .
Vậy số lần tối đa ta cần phải chia để đếm số mũ của số nguyên tố trong phân tích thừa số nguyên tố của là .
Độ phức tạp thời gian:
Cho số nguyên dương . Hai số nguyên dương , được gọi là cặp số may mắn nếu thỏa mãn tất cả các điều kiện sau:
Yêu cầu: Hãy tìm cặp số thỏa mãn tất cả các điều kiện trên. Nếu có nhiều cặp thì cho biết cặp số có giá trị nhỏ nhất.
Dữ liệu đảm bảo: .
Subtasks:
Duyệt từ đến , ta tính được (nếu thì ).
Sử dụng hàm __gcd()
có sẵn trong C++ STL để kiểm tra điều kiện ước số chung lớn nhất của và là lớn nhất và lấy đáp án.
Độ phức tạp thời gian: với .
Để tính UCLN của hai số mất độ phức tạp .
Với mỗi số , có cặp số mà trong đó là số lớn hơn.
Giả sử ta có hai số thỏa mãn và .
Ta có:
Lại có:
Có thể thấy, chỉ tồn tại hai số nhận ước chung lớn nhất là nếu là ước của và .
Khi tìm được lớn nhất thỏa mãn, để nhỏ nhất, ta xác định:
Giá trị lớn nhất ở đây cũng chính là ước lớn nhất của mà bé hơn hoặc bằng . Ta duyệt qua các ước của để tìm giá trị này.
Độ phức tạp thời gian: .
Có con kiến đi theo một đoàn, con kiến thứ có khối lượng và vận tốc di chuyển . Trên đường đi có một cành cây có độ dài chỉ cho phép khối lượng của một nhóm kiến đi qua tối đa là .
Ở mọi thời điểm, chỉ được có tối đa một nhóm kiến trên cành cây, sau khi nhóm đó đi xong thì nhóm sau mới được đi.
Vận tốc của một nhóm kiến là vật tốc của con kiến chậm nhất.
Yêu cầu: Sắp xếp các nhóm kiến sao cho thời gian qua cành cây là nhỏ nhất.
Lưu ý: Đoàn kiến bắt buộc phải đi tuần từ (không được thay đổi thứ tự của các con kiến).
Dữ liệu đảm bảo: , .
Áp dụng quy hoạch động:
Độ phức tạp thời gian: .