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

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

마츠자키 수

시간 제한8초메모리 제한512 MB

요약
각 질의 N, P에 대해 N보다 큰 두 소수의 합을 중복을 포함해 오름차순으로 나열하고 P번째 값을 구한다. P는 100 이하이다.
난이도

보통10점 중 6점

유형
정수론, 수학, 정렬, 완전 탐색
정답자
아직 제출이 없습니다

문제

마츠자키 교수는 우주의 진리를 연구하는 과학자이다. 인생, 우주, 모든 것의 답은 42라고들 하지만, 마츠자키 교수는 그것만으로는 우주의 진리를 밝히기에 부족하다고 본다. 우주의 진리는 두 매개변수로 이루어진 함수로 나타나며, 42는 그중 하나에 지나지 않는다는 것이다.

마츠자키 교수가 정의한 함수 M(N, P)는 N보다 큰 소수 두 개를 골라(같은 수를 두 번 골라도 된다) 더해서 얻을 수 있는 수 전체를 작은 것부터 순서대로 나열했을 때 P번째에 나타나는 수를 뜻한다. 두 가지 이상의 합으로 나타나는 수가 있어도, 그런 수는 합의 조합 수만큼 나열한다.

예로 N = 0인 경우를 생각하자. 이때는 소수 전체에서 두 개를 골라 더한다. 이런 합 가운데 가장 작은 수는 같은 수를 두 번 골라도 되므로 2 + 2 = 4임을 알 수 있다. 즉 M(0, 1) = 4이다. 다음으로 작은 수는 2 + 3 = 5이므로 M(0, 2) = 5이다. 같은 방식으로 생각하면 합을 나열한 것은 4, 5, 6, 7, 8, 9, 10, 10, 12, 13, 14, 14, 16, ... 과 같다. 즉 예를 들어 M(0, 9) = 12이다.

같은 방식으로 N = 10인 경우를 생각하면, 이때는 10보다 큰 소수 {11, 13, 17, 19, ...}에서 두 개를 고르게 되고, 얻어지는 합을 작은 것부터 나열하면 22, 24, 26, 28, 30, 30, 32, ... 와 같다.

여러분의 일은 N과 P가 주어졌을 때 M(N, P)를 계산하는 프로그램을 작성하는 것이다.

입력

입력은 여러 데이터 세트로 이루어진다. 데이터 세트는 한 줄이며, 두 정수 N (0 ≤ N ≤ 100,000)과 P (1 ≤ P ≤ 100)가 공백 하나로 구분되어 주어진다.

입력의 끝은 공백으로 구분된 두 개의 -1을 포함하는 한 줄로 나타낸다.

출력

각 데이터 세트마다 M(N, P)의 값을 한 줄에 출력한다. 출력에 불필요한 공백이나 줄바꿈을 넣어서는 안 된다.

예제1

  1. 예제 1

    입력
    0 55
    0 1
    0 2
    0 3
    10 1
    10 2
    10 3
    10 4
    10 5
    10 6
    11 1
    11 2
    11 3
    100000 100
    -1 -1
    
    예상 출력
    42
    4
    5
    6
    22
    24
    26
    28
    30
    30
    26
    30
    32
    200274