개발자일걸요..?

1629번 곱셈 본문

알고리즘코딩/Baekjoon Online Judge

1629번 곱셈

Re_A 2021. 3. 2. 17:28
728x90
반응형

문제링크 : www.acmicpc.net/problem/1629

 

1629번: 곱셈

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

www.acmicpc.net



<알고리즘>

  1) 함수를 이용하여 지수가 0혹은 1이 될때까지 반복해 2로 나누기

  2) 지수가 0이면 1, 1이면 밑을 C로 나눈 값을 return 

  3) 지수가 그 이상일 경우 홀수인지 짝수인지를 구분하여  pow 함수처럼 곱셈하여 return

 

 

메모리 : 2016KB     시간 : 0ms

#include<iostream>
using namespace std;

long long int divisionAlgo(long long int A, long long int B, long long int C) {
	if (B == 0) {
		return 1;
	}
	else if (B == 1) {
		return A%C;
	}
	long long int temp = divisionAlgo(A, (int)(B/2), C);

	//B가 짝수인 경우
	if (B % 2 == 0) {return (temp*temp) % C;}
    	//B가 홀수인 경우
	else { return (A*((temp*temp)%C)) % C; }

}
int main() {
	long long int A = 0;
	long long int B = 0;
	long long int C = 0;
	cin >> A >> B >> C;
	cout << divisionAlgo(A, B, C) << "\n";

	return 0;
}
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

1904번 01타일  (0) 2021.03.03
9184번 신나는 함수 실행  (0) 2021.03.03
1780번 종이의 개수  (0) 2021.03.01
1992번 쿼드트리  (0) 2021.03.01
2630번 색종이 만들기  (0) 2021.03.01
Comments