2389 - 取余运算
时间限制 : 1 秒
内存限制 : 128 MB
输入b,p,k的值,求bp mod k的值。其中b,p,k。
题目输入
一行,b, p, k,以空格隔开。(1000 <= p <= 2^64 - 1)
题目输出
一行,输出形式为b^p mod k=xxx。 (等号前后无空格)
其中xxx为计算出的结果。
输入/输出样例
输入格式
2 10 9
输出格式
2^10 mod 9=7
C++解答
#include<cstdio> #include<iostream> using namespace std; long long n,p,mm,ans,q; int main(){ cin>>n>>p>>mm; printf("%lld^%lld mod %lld=",n,p,mm); ans=1; q=n; while (p){ if (p & 1) ans=ans*q %mm; p>>=1; q=q*q % mm; } cout<<ans<<endl; return 0; }