题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入输出格式
输入格式:
三个整数b,p,k.
输出格式:
输出“b^p mod k=s”
s为运算结果
输入输出样例
输入样例#1: 复制
2 10 9
输出样例#1: 复制
2^10 mod 9=7
解析:
a^n可变换为a^2^n/2 或a^2*a^n/2(奇数)
且可推a*n mod k=(a mod k)* (b mod k)mod k;
#include<cstdio>
#include<cmath>
using namespace std;
int ans=1;
int b,p,k;
int mi()
{
while(p>0)
{
if(p%2==1)
{
ans%=k;
b%=k;
ans*=b;
}
p/=2;
b%=k;
b*=b;
}
}
int main()
{
scanf("%d%d%d",&b,&p,&k);
printf("%d^%d mod %d=",b,p,k);
mi();
printf("%d",ans%k);
}