Coding_Test 연습/Softeer
[현대 소프티어] (C++) 수퍼바이러스
Codetesing
2022. 10. 31. 13:01
정수론에 관한 문제이다.
새로운 이론은 없으며 다만 연산해야 하는 제곱수 N을 log(N)으로 줄여 연산하였다.
MOD는 제곱에 대하여 결합과 교환법칙이 성립하므로 쉽게 풀 수 있는 문제이다.
#include<iostream>
#define MOD 1000000007
using namespace std;
int main(int argc, char** argv)
{
long long N, K, P;
cin >> K >> P >> N;
N *= 10;
int cur = 1;
while(1) {
if(N == 1)
break;
if(N % 2 == 0)
{
P = P * P;
P %= MOD;
N /= 2;
}
else
{
K *= P;
K %= MOD;
N--;
}
}
long long out = K * P;
out %= MOD;
cout << out << '\n';
return 0;
}