백준 03783번 / 3783번 문제 링크
문제 이름 : 세제곱근
주 언어 : Python
태그 : 수학 / 이분탐색 / 임의 정밀도 & 큰 수 연산 / 수치해석
solved.ac 등급 : Platinum V (2022/11/10 확인)
문제 보기
문제 :
어떤 양의 정수가 주어졌을 때, 이 수의 세제곱근을 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 테스트 케이스는 한 줄로 구성되어 있다. 세제곱근을 구하고자 하는 수가 한 줄에 하나씩 입력으로 주어지며, 이 수는 150자리 이하이다. 수는 0으로 시작할 수도 있다.
출력 :
각 테스트 케이스에 대해서, 입력으로 주어진 수의 세제곱근을 소수점 10째짜리까지 출력한다. 이때, 반올림을 하는 것이 아니고, 버림을 해야 한다.
백준에 있는 이진탐색을 활용한 정수 제곱근 문제등을 응용하여 N * (10 ** 30) 의 정수 세제곱근을 이분 탐색을 통해 구해주고, 소수점을 붙여줍니다.
BigInt가 가능한 파이썬 같은 경우에는 (10 ** 30)을 그냥 직접 곱해주면 되고, 그 외에는 0을 30개 붙여주고 풀면 됩니다.
반올림을 하는 것이 아닌 버림이므로, $p^{3} \leq N \times 10^{30}$인 가장 큰 $p$를 찾아주면 됩니다.
$p$를 찾고나면, 정수 $p$를 문자열로 잘 조작하여 뒤의 10글자 앞에 .을 붙여주면 됩니다.
C나 C++ 같은 언어를 사용하신다면...그냥 BigInt를 구현하셔야 합니다.
(코드 준비 중)
243번째 푼 문제 (2022/11/10)