Problem Description
输入b,p,k的值,求b^p mod k的值。
Input
输入有多组数据,每组数据为一行三个数b,p,k,其中b,p,k*k为长整型数。
Output
对于每组数据输出b^p mod k的值。
Sample Input
2 10 9
Sample Output
2^10 mod 9=7
//快速取模算法,从学长哪里看来的比较简单# include <iostream> # include <cstdio> using namespace std; int main() { //freopen("a.txt","r",stdin); __int64 b,p,k; while(cin>>b>>p>>k) { int i; __int64 sum=1; for(i=0;i<p;i++) //每循环一次取余一次; { sum*=b; sum=sum%k; } cout<<b<<'^'<<p<<" mod "<<k<<'='<<sum<<endl; } }
#include<cstdio>
#include<iostream>
using namespace stdin;
int pow_mod(int a,int x,int p)
{
if(x==0) return 1;
if(x==1) return a%p;
long long tmp=pow_mod(a,x>>1,p);
tmp=(tmp*tmp)%p;
if(x&1) tmp=tmp*a%p;
return (int) tmp;
}
int main()
{
//freopen("b.txt","r",stdin);
int b,p,k;
while(cin>>b>>p>>k)
{
cout<<b<<'^'<<p<<" mod "<<k<<'='<<pow_mod(b,p,k)<<endl;
}
return 0;
}
2801

被折叠的 条评论
为什么被折叠?



