문제
정수 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; } |