2011年6月25日 星期六

ACM 374 Big Mod

不難,用Divide and Conquer去切


#include <stdio.h>

long long b, m, mod;

int expo(long long ex)
{
    int rs;

    if (ex == 1)
        return mod;
    if (ex == 0)
       return 1;
    rs = expo(ex/2)%m;
    if (ex%2)
        return (rs*rs*mod)%m;
    else
        return (rs*rs)%m;
}

int main(void)
{
    long long p;
   
    while (scanf("%lld%lld%lld", &b, &p, &m) == 3)
    {
        mod = b%m;
        printf("%d\n", expo(p));
    }
   
    return 0;
}

沒有留言:

張貼留言