056.A ^ B PROBLEM |
Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 80 Accepted Submission(s): 25 |
Description |
给定三个数A, B, K, 求 A的B次方除以K的余数 。
|
Input |
输入只有一行,为三个正整数A(1 <= A <= 2000000000), B(1 <= B <= 2000000000), K(1 <= K <= 10000)。
|
Output |
一个整数,(A ^ B) % K 的值。
|
Sample Input |
11 100 7 |
Sample Output |
4 |
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int powi(long long a,long long b,int k){
int c=1;
while(b>0){
if(b%2==1){
c=c*a%k;
b--;
}
else{
a=a*a%k;
b/=2;
}
}
return c;
}
int main(){
long long a,b;
int k;
cin>>a>>b>>k;
cout<<powi(a,b,k);
return 0;
}