【题解】快速幂

a^b

https://ac.nowcoder.com/acm/contest/996/A

快速幂运用分治思想

显然有:

每次根据该公式分治计算即可。

#include<iostream>
#include<cstdio>

using namespace std;

long long int b,p,k,ans=1;
int main()
{
    scanf("%lld%lld%lld",&b,&p,&k);
//  printf("%lld^%lld mod %lld=",b,p,k);
    if(k==1){
        puts("0");
        return 0;
    }
    while(p>0)
    {
        if(p&1) ans=ans*b%k;
        b=b*b%k;
        p>>=1;
    }
    printf("%lld\n",ans);
    return 0;
}
全部评论

相关推荐

双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
轻絵梨花泪沾衣:南泵,大少爷驾到通通闪开
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务