VM 08 Bài 06 - Những con số

Xem dạng PDF

Gửi bài giải


Điểm: 0,60 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
VNOI Marathon '08 - Round 8/DivBProblem Setter: Ngô Minh Ðức
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Trên một trang web dành cho những người yêu thích toán học, vừa xuất hiện một câu đố như sau: bạn có ~N~ số nguyên dương. Nhiệm vụ của bạn là tìm cách tô mỗi số bằng một màu khác nhau, sao cho một số không bao giờ chia hết cho một số khác cùng màu và số màu cần sử dụng là ít nhất.

Thấy câu đố rất thú vị, Bờm đã nhờ đến sự giúp đỡ của bạn! Bạn hãy viết chương trình giúp Bờm giải câu đố trên.

Input

  • Dòng 1: chứa số nguyên dương ~N~.
  • Dòng 2: chứa ~N~ số nguyên dương ~a_1, a_2, a_3, \dots, a_n~.

Giới hạn

  • ~N~ là số nguyên dương trong phạm vi ~[1, 50,000]~
  • ~a_i~ là số nguyên dương trong phạm vi ~[1, 10^6]~

Output

  • Dòng 1: chứa số nguyên dương ~K~, là số màu ít nhất cần sử dụng.
  • Dòng thứ ~i~ trong ~K~ dòng tiếp theo chứa số nguyên ~c_i~ là số số được tô màu ~i~, theo sau là ~c_i~ số nguyên có màu ~i~.

Nếu có nhiều phương án tô màu các số, chỉ cần in ra một phương án tùy ý.

Sample Input

10
24 7 42 8 2 16 22 21 33 11

Sample Output

3
3 2 7 11
4 8 21 22 33
3 16 24 42

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    samau07012005  đã bình luận lúc 24, Tháng 8, 2022, 11:15

    Dãy ~a_i~ có thể có số trùng nhau không ạ?