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

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

간단한 숫자 나열

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

요약
n과 k가 주어질 때 처음 n개의 소수를 이어 붙인 수에서 k개의 자릿수를 지워 남는 수가 최대가 되도록 만든다.
난이도

보통10점 중 5점

유형
그리디, 스택, 정수론, 구현
정답자
아직 제출이 없습니다

문제

수학 시간 쉬는 시간에 로마는 어떤 수가 소수인지 판별하는 연습을 하기로 했다. 소수란 자연수 중에서 약수가 정확히 두 개인 수, 즉 1과 자기 자신만을 약수로 갖는 수를 말한다. 로마는 칠판에 첫 번째 소수를 적고, 그 오른쪽에 두 번째 소수를 이어 적고, 다시 세 번째 소수를 이어 적는 식으로 첫 nn개의 소수를 모두 적었다. 그 결과 칠판에는 하나의 긴 수가 생겼고, 그 수는 <<23571113171923\dots>>처럼 시작한다.

로마의 선생님인 옐레나 예브게니예브나가 교실에 들어와서 반 학생들에게 다음과 같은 문제를 냈다. 칠판에 적힌 수에서 kk개의 숫자를 지워서 남은 수가 최대가 되도록 만들어 보라는 것이었다.

엄격한 선생님에게 낙제점을 받지 않도록 로마와 친구들을 도와 이 문제를 해결하자.

입력

이 문제의 입력 파일에는 여러 개의 테스트 데이터가 들어 있다. 입력 파일의 첫 줄에는 파일에 들어 있는 테스트 데이터의 개수 TT가 주어진다.

다음 TT개의 줄에는 각 테스트 데이터의 설명이 주어지며, 각 줄은 두 개의 양의 정수 nn과 kk로 이루어져 있다. 처음 nn개의 소수를 이어 붙인 수는 총 k+1k + 1자리 이상임이 보장된다.

입력 파일에 있는 모든 nn의 합은 400000을 넘지 않는다.

출력

각 테스트 데이터마다 해당하는 nn과 kk에 대한 최대 수를 한 줄에 하나씩 출력한다.

힌트

첫 번째 테스트에서 로마는 수 2357을 적었다. 여기서 두 개의 숫자를 지워서 만들 수 있는 최대 수는 57이다.

두 번째 테스트에서 로마는 수 235711을 적었다. 여기서 세 개의 숫자를 지워서 만들 수 있는 최대 수는 711이다.

예제1

  1. 예제 1

    입력
    2
    4 2
    5 3
    
    예상 출력
    57
    711