整数的快速幂取模

来源:互联网 发布:java string变量 编辑:程序博客网 时间:2024/05/22 07:06

利用二分法

Montgomery模板

//求解a^b mod mint Montgomery(int a,int b,int m){ int r=a%m;int t=1;if(b==0)return 1;while(b>1){if((b&1)!=0){t=(t*r)%m;}r=r*r%m;b>>=1;}return (r*t)%m;}

//POJ 1995#include<cstdio>using namespace std;int Montgomery(int a,int b,int m){int r=a%m;int t=1;if(b==0)return 1;while(b>1){if((b&1)!=0){t=(t*r)%m;}r=r*r%m;b>>=1;}return (r*t)%m;}int main(){int Z,M,H;scanf("%d",&Z);while(Z--){scanf("%d",&M);scanf("%d",&H);int sum=0;for(int i=0;i<H;i++){int a,b;scanf("%d%d",&a,&b);sum+=Montgomery(a,b,M);sum%=M;}printf("%d\n",sum);}return 0;}



原创粉丝点击