반응형
✏️ 문제 링크
https://softeer.ai/practice/6292
✏️ 문제 풀이
Math.pow는 큰 숫자는 커버하지 못하기 때문에 지수 재귀 계산법으로 접근해야한다고 한다.
아래 이미지에서 보면 지수가 짝수인 경우, 홀수인 경우가 나뉘게 되고 지수가 1인 경우는 num을 return 해주면 된다. 이 로직대로 구현해주면 아래 코드와 같다.
✏️ 문제 코드
const readline = require('readline');
const rl = readline.createInterface({input:process.stdin, output: process.stdout});
let input = [];
const DIV = 1000000007n;
rl.on('line', function(line){
input.push(line);
}).on('close', function(){
const [k, p, n] = input.shift().split(' ').map(BigInt);
const power = (power_num) => {
if(power_num===1n) return p;
if(power_num%2n===0n){// 짝수
const sub = power(power_num/2n);
return (sub*sub)%DIV;
}else{
const sub = power((power_num-1n)/2n);
return (p*sub*sub)%DIV;
}
}
const answer = (k*power(n*(10n)))%DIV
console.log(parseInt(answer))
})
참고 링크
https://vehiclewithai.tistory.com/7
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[백준 10703번 유성/ JS] (1) | 2024.11.14 |
---|---|
[Softeer] HSAT 7회 정기 코딩 인증평가 기출 - 순서대로 방문(level3, Javascript) (0) | 2024.11.13 |
[Softeer] 21년 재직자 대회 예선 - 전광판(level2, Javascript) (0) | 2024.11.12 |
[프로그래머스] 타겟 넘버 / C++ / level2 (0) | 2021.10.06 |
[백준] 13701번: 중복 제거 (0) | 2021.10.05 |
댓글