题目来源:http://poj.org/problem?id=1995
题目大意:
计算(A1B1+A2B2+ ... +AHBH)mod M
解题思路:
模运算法则和倍增快速幂
AC代码:
#include <stdio.h>
#include <stdlib.h>
#define N 45010
#define M 4
long long ppp(long long a, long long b, long long m)
{
long long r = 1;
for (;b>0;b/=2)
{
if (b%2)
{
r = r*a%m;
}
a = a*a%m;
}
return r%m;
}
int main()
{
int n, i, m, t;
long long a, b, sum;
scanf("%d",&n);
while (n--)
{
sum = 0;
scanf("%d",&m);
scanf("%d",&t);
for (i=0;i<t;i++)
{
scanf("%lld%lld",&a,&b);
sum += ppp(a,b,m);
}
printf("%lld\n",sum%m);
}
return 0;
}