Skip to content

Commit 5ffd3a7

Browse files
committed
[Silver I] Title: 곱셈, Time: 8 ms, Memory: 69104 KB -BaekjoonHub
1 parent c71e1cf commit 5ffd3a7

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [Silver I] 곱셈 - 1629
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1629)
4+
5+
### 성능 요약
6+
7+
메모리: 69104 KB, 시간: 8 ms
8+
9+
### 분류
10+
11+
수학, 분할 정복을 이용한 거듭제곱
12+
13+
### 제출 일자
14+
15+
2025년 6월 25일 21:45:26
16+
17+
### 문제 설명
18+
19+
<p>자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오.</p>
20+
21+
### 입력
22+
23+
<p>첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.</p>
24+
25+
### 출력
26+
27+
<p>첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다.</p>
28+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
let input = readLine()!.split(separator: " ").map { Int($0)! }
2+
let a = input[0], b = input[1], c = input[2]
3+
4+
func dfs(a: Int, b: Int, c: Int) -> Int {
5+
if b == 1 {
6+
return a
7+
}
8+
9+
if b % 2 != 0 {
10+
return a * dfs(a: a, b: b - 1, c: c)
11+
}
12+
13+
let half = dfs(a: a, b: b / 2, c: c) % c
14+
return half * half % c
15+
}
16+
17+
print(dfs(a: a, b: b, c: c) % c)

0 commit comments

Comments
 (0)