【数学基础03】Raising Modulo Numbers

题目来源: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;
}

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页