快速幂取模
自己想的二进制化算法=.=
#include<stdio.h>
int a[20][10010];
int main(){
int n,m,k;
while(scanf("%d%d%d",&n,&m,&k)!=EOF){
int i,j;
for(i=1;i<=n;i++){
scanf("%d",&a[1][i]);
a[1][i]%=k;
for(j=2;j<=14;j++){
a[j][i]=a[j-1][i]*a[j-1][i];
a[j][i]%=k;
}
}
int res=0;
int plus[20];
for(i=1;i<=14;i++){
if(m%2==1)plus[i]=1;
else plus[i]=0;
m/=2;
}
for(i=1;i<=n;i++){
int x=1;
for(j=1;j<=14;j++)if(plus[j]){
x*=a[j][i];
x%=k;
}
if(x==0)res++;
}
printf("%d\n",res);
}
return 0;
}
本文介绍了一种基于二进制化的快速幂取模算法实现方法,并通过C语言代码详细展示了如何利用该算法来高效计算特定场景下的幂次方取模结果。此算法适用于需要进行大量幂运算并同时考虑效率和精度的应用。
191

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



