[Softeer, JS] 바이러스

mxxn·2023년 8월 1일

Softeer

목록 보기
8/8

문제

문제 링크 : 바이러스

실패한 풀이 1

const readline = require('readline');

const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

rl.on('line', input => {
    const [virus, num, sec] = input.split(' ').map(el => +el);
    console.log( virus*(num**sec) % 1000000007)
})
  • 아마 js number 범위 초과 때문

실패한 풀이 2

const readline = require('readline');

const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

rl.on('line', input => {
    let [virus, num, sec] = input.split(' ').map(el => +el);
    while(sec--){
        virus = (virus*num)%1000000007
    }
    console.log(virus)
})
  • 매번 mod를 하여 수의 범위를 낮춰서 통과한 문제 개수는 많아졌지만, 몇가지 실패로 보아 더 큰 수가 있는 것으로 보임

풀이

const readline = require('readline');

const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

rl.on('line', input => {
    let [virus, num, sec] = input.split(' ').map(el => BigInt(+el));
    let mod = BigInt(1000000007);
    while(sec--){
        virus = (virus*num)%mod
    }
    console.log(parseInt(virus))
})
  1. 처음부터 BigInt 형으로 값을 받고
  2. log를 찍을 때 parseInt('n'을 없애기 위해)
profile
내일도 글쓰기

1개의 댓글

comment-user-thumbnail
2023년 8월 1일

유익한 글이었습니다.

답글 달기