티스토리 뷰
이 문제를 아래의 팩토리얼 0의 개수 처럼 풀었다가는 입력 범위 때문에 시간 초과가 난다..
n팩토리얼에서 특정 인수 m의 개수를 세기 위해
n/m의 개수, n/m^2의 개수... 이렇게 구해가며 더해주었다.
let input = readLine()!.split(separator: " ").map { Int($0)! }
let n = input.first!
let m = input.last!
let nMinusM = n - m
var countOfBoonzaTwo = 0
var countOfBoonzaFive = 0
var countOfBoonmoTwo = 0
var countOfBoonmoFive = 0
func solve(_ first: inout Int, _ second: inout Int, _ value: Int) {
var powerTwo = 2
var powerFive = 5
while powerTwo <= value {
first += (value / powerTwo)
powerTwo *= 2
}
while powerFive <= value {
second += (value / powerFive)
powerFive *= 5
}
}
solve(&countOfBoonzaTwo, &countOfBoonzaFive, n)
solve(&countOfBoonmoTwo, &countOfBoonmoFive, m)
solve(&countOfBoonmoTwo, &countOfBoonmoFive, nMinusM)
let twoResult = countOfBoonzaTwo - countOfBoonmoTwo
let fiveResult = countOfBoonzaFive - countOfBoonmoFive
print(twoResult < fiveResult ? twoResult : fiveResult)
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
11650번 '좌표 정렬하기' (0) | 2018.08.05 |
---|---|
2751번 '수 정렬하기 2' (0) | 2018.08.04 |
1676번 '팩토리얼 0의 개수' (0) | 2018.08.01 |
10872번 '팩토리얼' (0) | 2018.08.01 |
11653번 '소인수분해' (0) | 2018.08.01 |