幂次方
题目描述Time Limit: 1000 ms
Memory Limit: 256 mb对任意正整数N,求XN%233333的值。
要求运算的时间复杂度为O(logN)。
例如
X30 = X15*X15
X15=X7*X7*X
X7=X3*X3*X
X3=X*X*X
共7次乘法运算完毕。
输入输出格式
输入描述:
输入两个整数X和N,用空格隔开,其中X,N<=10^9。输出描述:
输出X^N对233333取模的结果。
输入样例#:
2 5
输出样例#:
32
解题思路:
由于题目数据过大,应在计算过程中就对数据取模,应用同余模定理(a*b)%c = ((a%c)*(b%c))%c
#include<iostream>
#define M 233333
using namespace std;
long long int X,N,ans = 1;
int main(){
while(cin>>X>>N){
X = X%M;
while(N > 0){
if(N % 2 == 1) ans = ans * X%M;
N /= 2;
X = X * X %M;
}
cout<<ans%M<<endl;
}
return 0;
}