Năm , Leonardo Fibonacci, nhà toán học người Ý, tình cờ phát hiện ra tỉ lệ vàng được tiệm cận bằng thương của hai số liên tiếp trong một loại dãy số vô hạn được một số nhà toán học ẤN ĐỘ xét đến từ năm . Sau đó dãy số này được đặt tên là dãy số Fibonacci , trong đó và mỗi số tiếp theo trong dãy được tính bằng tổng của hai số ngay trước nó. Đây là số đầu tiên của dãy số Fibonacci: . Người ta đã khám phá ra mối liên hệ chặt chẽ của số Fibonacci và tỉ lệ vàng với sự phát triển trong tự nhiên (cánh hoa, cành cây, vân gỗ), trong vũ trụ (hình xoáy trôn ốc dải ngân hà, khoảng cách giữa các hành tinh), hay sự cân đối của cơ thể con người. Đặc biệt số Fibonacci được ứng dụng mạnh mẽ trong kiến trúc (Kim tự tháp Ai Cập, tháp Eiffel), trong mỹ thuật (các bức tranh của Leonardo da Vinci), trong âm nhạc (các bản giao hưởng của Mozart) và trong nhiều lĩnh vực khoa học kĩ thuật.
Trong toán học, dãy Fibonacci là một đối tượng tổ hợp quan trọng có nhiều tính chất đẹp. có nhiều phương pháp hiệu quả liệt kê và tính các số Fibonacci như phương pháp lặp hay phương pháp nhân ma trận.
Sau khi được học về dãy số Fibonacci, Sơn rất muốn phát hiện thêm những tính chất của dãy số này. Vì thế Sơn đặt ra bài toán sau đây: Hỏi rằng có thể tìm được một tập con các số trong số Fibonacci liên tiếp bắt đầu từ số thứ , sao cho tổng của chúng chia hết cho một số nguyên dương cho trước hay không? Nhắc lại, một tập con số của một dãy số là một cách chọn ra số bất kỳ trong số của dãy đó, mỗi số được chọn không quá một lần.
Yêu cầu: Hãy giúp Sơn giải quyết bài toán đặt ra.
Dữ liệu vào:
Dòng thứ nhất ghi số nguyên dương là số lượng bộ dữ liệu;
Mỗi dòng trong dòng tiếp theo chứa ba số nguyên dương và là thông tin của một bộ dữ liệu.
Các số trên cùng dòng được ghi cách nhau bởi dấu cách.
Dữ liệu ra:
Ghi ra dòng tương ứng với kết quả của bộ dữ liệu đầu vào, mỗi dòng có cấu trúc như sau:
Đầu tiên ghi số nguyên là số lượng các số trong tập con tìm được, tiếp đến ghi số nguyên là các số thứ tự trong dãy Fibonacci của q số trong tập con tìm được. Nếu không tìm được tập con thỏa mãn điều kiện đặt ra thì ghi ra một số . Nếu có nhiều cách chọn thì chỉ cần đưa ra một cách chọn bất kỳ.
Ví dụ:
Dữ liệu vào:
1
10 3 9
Dữ liệu ra:
2 5 7
Giải thích:
Trong ví dụ trên một tập con thỏa mãn điều kiện đặt ra là tập gồm hai số với tổng bằng .