Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

hwooo

BOJ (C/C++) 1629번: 곱셈 본문

Study/Algorithm

BOJ (C/C++) 1629번: 곱셈

hwooo 2022. 12. 9. 05:00

https://www.acmicpc.net/problem/1629

 

1629번: 곱셈

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.

www.acmicpc.net


풀이

반복문을 이용한 계산은 시간초과가 발생해서, 알고리즘 설명대로 분할 정복을 이용한 거듭제곱으로 계산했다.이 과정에서 A는 int형의 범위가 넘어갈 수 있으므로 long long 으로 지정해줬다.(백준에서는 long long형 변수를 %d로 입력받아도 오류가 안 나는데 VS 환경에서는 발생함.)

코드

#include <stdio.h>
int main() {
	int B, C;
	long long int A, sum = 1;

	scanf("%lld %d %d", &A, &B, &C);
	while (B) {
		if (B & 1) sum = (sum* A) % C;
		A = (A*A) % C;
		B >>= 1;
	}

	printf("%lld", sum);
	return 0;
}

'Study > Algorithm' 카테고리의 다른 글

BOJ (C/C++) 2589번: 보물섬  (0) 2022.12.09
BOJ (C/C++) 1639번: 행운의 티켓  (0) 2022.12.09
BOJ (C/C++) 11723번: 집합  (0) 2022.12.08
BOJ (C/C++) 1197번: 최소 스패닝 트리  (0) 2022.12.08
BOJ (C/C++) 1976번: 여행 가자  (0) 2022.12.08