문제와 입출력 방식 :
1. a 제곱 b의 값을 나누기 10해서 맨뒤에 값을 구해봤다.
하지만 7의 100승 같은 너무 큰 수가 나올때는 컴퓨터가 값을 구하질 못해서 실패함
2. a를 제곱했을때의 값이 가지는 반복된 끝자리수가 있다는 걸 알았다
"1": [1],
"2": [2, 4, 8, 6],
"3": [3, 9, 7, 1],
"4": [4, 6],
"5": [5],
"6": [6],
"7": [7, 9, 3, 1],
"8": [8, 4, 2, 6],
"9": [9, 1],
"0": [10]
3. 이걸로 반복되는 수의 최대가 4라는 것을 알았다.
그래서 b를 4로 나눠서 a와 제곱을 했다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = []
rl.on('line',line=>{
input.push(line.split(' ').map(item=>parseInt(item)))
})
.on('close',()=>{
const t = input[0][0];
for(i=1; i<=t; i++){
let [a,b] = input[i];
a %= 10
b %= 4
let result = (a**b)
let rst = parseInt(result.toString().slice(-1))
console.log(rst)
}
process.exit();
})
4. 하지만 b의 값이 4일때는 0제곱이 되어버린다는 것을 발견하고 예외값으로 설정해줬다.
if(b==0) b=4;
5. 마지막으로 결과값의 맨 뒷자리 수가 0이라면 10번째 컴퓨터라는 예외값을 하나 더 추가 해줌으로 코드를 완성할 수 있었다.
if(rst == 0) rst = 10
완성코드:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = []
rl.on('line',line=>{
input.push(line.split(' ').map(item=>parseInt(item)))
})
.on('close',()=>{
const t = input[0][0];
for(i=1; i<=t; i++){
let [a,b] = input[i];
a %= 10
b %= 4
if(b==0) b=4;
let result = (a**b)
let rst = parseInt(result.toString().slice(-1))
if(rst == 0) rst = 10
console.log(rst)
}
process.exit();
})
'Coding Test' 카테고리의 다른 글
[ node.js, 자바스크립트 ] 백준 알고리즘 1330번 (0) | 2021.09.10 |
---|---|
[ node.js, javascript ] 백준 알고리즘 2588번 (0) | 2021.09.10 |
[ node.js, 자바스크립트 ] 백준 알고리즘 10430번 (0) | 2021.09.10 |
[ node.js ] 백준 알고리즘 2908번 자바스크립트 (0) | 2021.09.10 |
[node.js] 백준 알고리즘 자바스크립트 출력 방법 (0) | 2021.08.26 |