欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速幂取模

程序员文章站 2022-07-09 10:27:29
...

首先得知道余数有如下性质:

  1. (a+b)%m == (a%m+b%m)%m
  2. a*b%c=((a%c)*b)%c
  3. ab%c=(a%c)*b%c
  4. a^p=aa…*a=(a%p) *(a%p) * … *(a%p)
    代码:
#include<bits/stdc++.h>
using namespace std;
#define LL long long
LL  quickMod(LL a, LL p, LL mod) {
	p%=mod;
    LL base=1;
    while(p) {
        if(p&1) base=base*a%mod;
        a=a*a%mod; 
		p>>=1;
    }
    return base;
}
int main(){
	int a,p,mod;
	scanf("%d%d%d",&a,&p,&mod); 
	printf("%d\n",quickMod(a,p,mod));
} 

上一篇: PHP RC4算法

下一篇: RC4算法