아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

자연수 색칠하기

시간 제한1초메모리 제한1024 MB

요약
1부터 N까지의 자연수에 색을 칠하되 서로소인 두 수는 다른 색을 받도록 최소 개수의 색으로 칠하고, 색의 수와 색 배정을 출력한다.
난이도

보통10점 중 7점

유형
정수론, 수학, 그리디, 조합론
정답자
아직 제출이 없습니다

문제

11부터 NN까지의 자연수를 색칠한다. 단, 서로소인 서로 다른 두 자연수는 다른 색으로 칠해야 한다. 최소한의 색을 써서 모든 자연수를 칠하는 방법을 찾는 프로그램을 작성하자.

입력

첫째 줄에 자연수 NN이 주어진다. (1≤N≤500 0001 \le N \le 500\,000)

출력

첫째 줄에 사용한 색의 수 KK를 출력한다.

둘째 줄에 NN개의 수를 공백을 사이에 두고 출력한다. ii번째 수는 자연수 ii의 색이다. 색은 11 이상 KK 이하의 정수로 나타낸다.

힌트

다음은 N=5N=5일 때의 올바른 색칠과 올바르지 않은 색칠의 예시다.

첫 번째 색칠은 올바른 색칠이다. 22와 44는 같은 색으로 색칠했지만, 서로소가 아니므로 문제의 조건에 위배되지 않는다. 또한, 55까지의 자연수를 색칠하기 위해 최소 44개의 색이 필요함을 증명할 수 있다.

두 번째 색칠은 서로소인 22와 33이 같은 색으로 칠해졌기 때문에 올바르지 않은 색칠이다.

세 번째 색칠은 최소한의 색깔로 칠하지 않았기 때문에 올바르지 않은 색칠이다.

예제1

  1. 예제 1

    입력
    5
    
    예상 출력
    4
    1 2 3 2 4