Tác giả:
Cho số nguyên dương , hãy tìm số tự nhiên lớn nhất thỏa mãn là ước của .
Với bài này, ta chỉ việc tìm số mũ đúng của trong bằng công thức Legendre, cụ thể là:
Bạn có thể xem chứng minh của công thức trên tại đây.
Độ phức tạp của ý tưởng trên là , dưới đây là code cài đặt tham khảo.
Cho một xâu gồm các chữ cái Latin thường với tối thiểu chữ số thập phân. Hãy tìm xâu con có độ dài của thỏa mãn các kí tự của nó là các chữ số và tạo thành số nhỏ nhất trong hệ thập phân.
Ta đặt là độ dài của xâu sau khi loại bỏ các chữ cái xuất hiện trong nó.
Dễ dàng thấy các chữ cái Latin xuất hiện trong là không cần thiết, vì vậy ta có thể loại bỏ nó khỏi xâu.
Để tìm ra xâu con kết quả, ta sẽ ưu tiên lấy các chữ số đứng trước nhỏ nhất có thể. Từ vị trí của chữ số đó, ta sẽ tìm các kí tự tiếp theo với ý tưởng tương tự. Nếu trong đoạn ưu tiên có các chữ số nhỏ nhất trùng nhau, ta sẽ ưu tiên lấy chữ số có vị trí nhỏ nhất để các lần lấy sau được tối ưu.
Từ ý tưởng trên, ta có thể tham lam như sau:
Độ phức tạp của ý tưởng trên là , dưới đây là code cài đặt tham khảo.
Cho đoạn thẳng được nối bởi điểm và trên mặt phẳng , hãy tìm số lượng điểm có tọa độ nguyên nằm trên đoạn thẳng đó (không tính đầu đoạn thẳng).
Giả sử điểm được cho là và và một điểm (khác và ) nằm trên đoạn thẳng . Ta gọi điểm là điểm nằm trên đường tròn đường kính , là hình chiếu của trên . Để đơn giản, ta có thể dựng .
Để có tọa độ nguyên thì và phải có độ dài là số nguyên không âm. Điều này chỉ xảy ra khi và chỉ khi
Từ nhận xét trên, kết quả cần tìm của ta là .
Độ phức tạp của ý tưởng trên là , dưới đây là code cài đặt tham khảo.