반응형
개요
https://www.acmicpc.net/problem/1009
이 문제는 제곱수는 구하는 문제라 쉽게 자료형의 한계 값을 넘어버릴 수 있습니다.
이를 대처하기 위해선 제곱 수의 일의 자리의 특성을 알면 좋습니다.
제곱 수의 1의 자리는 4번 주기로 반복됩니다.
수학적으로 증명하기에는 너무 복잡하기에 "그렇구나" 정도로 알아두는 게 좋습니다.
이를 이용하면 문제에서 입력되는 b를 최소화할 수 있습니다.
코드
package main
import (
"bufio"
"fmt"
"math"
"os"
)
func main() {
results := []int{}
reader := bufio.NewReader(os.Stdin)
var re int
fmt.Fscanln(reader, &re)
for i := 0; i < re; i++ {
var a, b int
fmt.Fscanln(reader, &a, &b)
// 1의 자리는 4번 주기로 반복되기에 나누기 연산
// b는 1 이상인 값이므로 0이 나온다는 건 4라는 의미
b = b % 4
if b == 0 {
b = 4
}
// 제곱
result := int(math.Pow(float64(a), float64(b))) % 10
if result == 0 {
// 0일 경우 값을 10으로
results = append(results, 10)
} else {
// 10으로 나눈 나머지 값들
results = append(results, result)
}
}
for _, value := range results {
fmt.Println(value)
}
}
사용할 수 있는 입력 값들입니다.
// 입력
8
10 11
4 7
10 2
20 1
4 2
2 3
98 5
99 999999
// 결과
10
4
10
10
6
8
8
9
반응형
'Go Lang > Algorithm' 카테고리의 다른 글
[GoLang] 백준 1004번, 어린 왕자(피타고라스 정리) (1) | 2024.02.09 |
---|---|
[GoLang] 백준 2252번, 줄 세우기(위상 정렬) (0) | 2024.02.06 |
[GoLang] 백준 1260번, DFS와 BFS (1) | 2024.01.29 |
[GoLang] 백준 11726번, 11727번 2×n 타일링 (1) | 2024.01.28 |
[GoLang] 백준 1018번 체스판 다시 칠하기 (1) | 2024.01.22 |