首页 > 代码库 > POJ1995:Raising Modulo Numbers(快速幂取余)

POJ1995:Raising Modulo Numbers(快速幂取余)

题目:http://poj.org/problem?id=1995

题目解析:求(A1B1+A2B2+ ... +AHBH)mod M.

大水题。

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>using namespace std;int n,mod,sum;int main(){    int T,a[45010],b[45010];    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&mod,&n);        int sum=0,t;        for(int i=0; i<n; i++)        {            scanf("%d%d",&a[i],&b[i]);            t=1;            while(b[i])            {                if(b[i]&1)                    t=(t*a[i])%mod;                b[i]>>=1;                a[i]=((a[i]%mod)*(a[i]%mod))%mod;            }            sum=(sum+t)%mod;        }        printf("%d\n",sum);    }    return 0;}

 

POJ1995:Raising Modulo Numbers(快速幂取余)