팩토리얼과 거듭제곱

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

요약
각 테스트마다 n과 k가 주어질 때 n!이 k^i로 나누어지는 가장 큰 i를 구한다.
난이도

보통10점 중 5점

유형
정수론, 수학
정답자
아직 제출이 없습니다

문제

수학 나라에 전쟁이 일어났다. 팩토리얼 진영과 거듭제곱 진영은 누가 수학 나라를 지배할지 결정하기 위해 싸우고 있다.

팩토리얼 진영의 이름난 장군 nn 은 자기 자신의 팩토리얼을 계산하며 훈련하여 n!n! 만큼 강해졌고, 거듭제곱 진영의 제독 kk 는 자기 자신을 ii 제곱 하기 위한 지수 ii 를 준비하며 kik^i 만큼 강해졌다.

드디어 오늘, nn 과 kk 가 맞붙는 날이 왔다. 제독 kk 는 장군 nn 을 나누어 더 작은 수로 만들어 버리려고 몇 년 동안 훈련해 왔다.

둘 다 훈련으로 성장했으므로 실제로는 n!n! 과 kik^i 가 싸우는 셈이다. 이때 n!n! 이 kik^i 으로 나누어떨어지게 하는 가장 큰 ii 를 찾는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT 가 주어진다. (1≤T≤1001 \le T \le 100)

다음 TT 개의 줄에는 각각 두 정수 nn 과 kk 가 공백으로 구분되어 주어진다. (2≤n≤10182 \le n \le 10^{18}, 2≤k≤10122 \le k \le 10^{12})

출력

각 테스트 케이스마다 조건을 만족하는 가장 큰 ii 를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2
    5 2
    10 10
    
    예상 출력
    3
    2