FZU 1752 a^b%c

简介:

题目连接:http://acm.fzu.edu.cn/problem.php?pid=1752
解题思路:要用快速幂,但不是单纯的用,如果单纯的用的话就会爆掉,要把乘法转化为加法,然后再用而且尽量用位运算。。。
上代码:

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
LL multi(LL a, LL b, LL c)
{
    LL ans=0;
    a=a%c;
    while(b)
    {
        if(b&1)
        {
            ans+=a;//ans=(ans+a)%c;
            if(ans>=c)
            ans-=c;
        }

        a<<=1;//a=(a+a)%c;
        if(a>=c)
        a-=c;
        b>>=1;
    }
    return ans;
}
LL quick(LL a, LL b, LL c)
{
    LL ans=1;
    while(b)
    {
        if(b&1)
        ans=multi(ans, a, c);
        a=multi(a, a, c);
        b>>=1;
    }
    return ans;
}
int main()
{
     LL n,m,mod;
     while(~scanf("%I64d%I64d%I64d",&n,&m,&mod))
     {
        printf("%I64d\n", quick(n, m, mod));
     }
    return 0;
}
//100000000000000000
目录
相关文章
|
10月前
2^x modn=1
2^x modn=1
51 0
(1+2+...+100)+(1^2+2^2+...+50^2)+(1/1+1/2+...+1/10)
(1+2+...+100)+(1^2+2^2+...+50^2)+(1/1+1/2+...+1/10)
HDOJ 2035 人见人爱A^B
HDOJ 2035 人见人爱A^B
146 0
HDOJ(HDU) 2162 Add ‘em(求和)
HDOJ(HDU) 2162 Add ‘em(求和)
84 0
|
机器人
BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3259  Solved: 1564[Submit][Status][Discuss] Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。
1063 0