计算 a^b mod c 的计算函数
int mod(int a,int b,int c)
{
//求a^b mod c
//******************************
//x = A^B mod c
//******************************
int x,y;
if(a==0) return 0;
if(b==0) return 1;
x=1;
y=a%c;
while(b)
{
if(b%2) x=(x*y)%c;
b>>=1;
y=(y*y)%c;
}
return x;
}// 算法导论中的改编算法
算法导论中的原版算法
int mod1(int a,int b,int n)
{
/*
计算a^b % n 的情况 见算法导论 page 539
*/
int i,c;
__int64 d;
int bit[100];
c=0;d=1;i=0;
while(b>0) // 将 b 表示为二进制数的形式
{bit[i]=b%2;b/=2;i++;}
for(int j=i-1;j>=0;j--) // 主要过程
{
c=2*c;d=(d*d)%n;
if(bit[j]==1) {c=c+1;d=(d*a)%n;}
}
return d;
}
检验是否错误 进入pku 2499
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试