본문 바로가기
알고리즘/C++

[백준] 1629번 곱셈

by 엑츄얼리 2021. 3. 17.

www.acmicpc.net/problem/1629

 

1629번: 곱셈

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

www.acmicpc.net

구현 자체는 어렵지 않은데 방식을 모르면 쉽게 풀 수 없는 문제 같다.

여러 번 풀면서 방식을 익혀놓으면 다른 문제 풀 때 사고에 도움이 될 것 같다.

 

알고리즘 방식

 

#include <iostream>
#include <string>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
#include <list>
#include <stack>
#include <deque>

using namespace std;

long long pow(long long a, long long b, long long c) {
	if (b == 1)
		return a % c;
	
	long long val = pow(a, b / 2, c);
	val = val * val % c;
	if (b % 2 == 0)
		return val;
	else
		return val * a % c;

}

int main(void) {
	long long A, B, C;
	long long result = 1;
	cin >> A >> B >> C;

	cout << pow(A, B, C);
}

'알고리즘 > C++' 카테고리의 다른 글

[백준] 2573번 빙산  (0) 2021.03.17
[백준] 2493번 탑  (0) 2021.03.17
[백준] 9663번 N-Queen  (0) 2021.03.16
[백준] 1463번 1로 만들기  (0) 2021.03.16
[백준] 9466번 텀 프로젝트  (0) 2021.03.13

댓글