분할 정복

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

요약
M 이상 N 이하의 정수 중 약수가 가장 많은 수를 고르고, 그런 수가 여러 개면 가장 큰 수를 골라 약수 개수와 함께 출력한다.
난이도

쉬움10점 중 3점

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

문제

두 정수 MM과 NN이 주어진다 (1≤M≤N≤50001 \le M \le N \le 5000). 다음 조건을 모두 만족하는 정수 XX와 YY를 구하여라.

  • A. M≤X≤NM \le X \le N
  • B. YY는 XX의 약수의 개수이다.
  • C. YY는 가능한 한 크다.
  • D. (조건 C를 만족하는 것 중에서) XX는 가능한 한 크다.

즉, 구간 [M,N][M, N]에 속하는 정수 중에서 약수의 개수가 가장 많은 정수를 XX로 하고, 그러한 정수가 여러 개라면 그중 가장 큰 것을 택한다. YY는 그때의 약수의 개수이다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 정수 MM과 NN (1≤M≤N≤50001 \le M \le N \le 5000)이 공백으로 구분되어 한 줄에 주어진다. M=N=0M = N = 0인 줄은 입력의 끝을 의미하며, 이 줄은 처리하지 않는다.

입력은 표준 입력으로 주어진다.

출력

각 테스트 케이스마다 두 정수 XX와 YY를 공백으로 구분하여 한 줄에 출력한다.

출력은 표준 출력으로 쓴다.

예제1

  1. 예제 1

    입력
    1 5
    300 500
    4500 5000
    0 0
    
    예상 출력
    4 3
    480 24
    4680 48