본문 바로가기

개발/알고리즘

거듭제곱 구하기

문제


정수 a와 m이 주어 졌을때, a의 m 거듭제곱을 1,000,000,007 로 나눈 나머지를 출력하는 문제이다.




입력


두 정수 a와 m이 주어진다. 1 <= a, m <= 2^63 - 1




출력


a 의 m 제곱 값을 10억 7로 나눈 나머지를 출력한다.




힌트


예제 입력


2 4


예제 출력


16


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
29
30
#include <iostream>
#include <fstream>
  
using namespace std;
long long a, m;
  
long long A[33];
long long standard = 1000000007;
  
long long pow(long long a, long long b) {
    if (b == 0) { //탈출 함수
        return 1;
    }
    if ((b & 1) == 0){ //짝수
        long long res = pow(a, b / 2);
        return res * res % standard;
    }else{ //홀수
        long long res = pow(a, b - 1);
        return a * res % standard;
    }
}
int main() {
    //ifstream cin("input.txt");
    cin >> a >> m;
    long long res = pow(a, m);
    cout << res << endl;
    //system("pause");
    return 0;
}


'개발 > 알고리즘' 카테고리의 다른 글

이친수  (0) 2016.12.09
계단 오르기  (0) 2016.12.09
나누기  (0) 2016.12.09
cow party  (0) 2016.12.03
가장 먼 두 도시  (0) 2016.12.03