首页 > 其他 > 详细

CODEVS 3500

时间:2016-04-11 22:06:38      阅读:219      评论:0      收藏:0      [点我收藏+]

题目描述

         输入3个数a,b,c,求a^b mod c=?
输入描述
         三个数a,b,c
输出描述
         一个数,即a^b mod c 的答案。
样例输入
5 10 9
样例输出

4

 

基本的二进制快速幂,因为任意一个十进制数可以写成一个二进制权展开式,例如10=2^3+2^1

那么a^10=a^(2^3)*a^(2^1),使用位运算,可以使得代码十分简洁

#include <cstdio>
typedef long long LL;
LL fast_cover(LL a,LL b,LL c)
{
    LL s=1;
    while(b)
    {
        if(b&1) s=(s*a)%c;
        a=(a*a)%c;
        b>>=1;
    }
    return s;
}
int main()
{
    LL a,b,c;
    while(~scanf("%lld%lld%lld",&a,&b,&c))
    {
        printf("%lld\n",fast_cover(a,b,c));
    }
    return 0;
}

 

CODEVS 3500

原文:http://www.cnblogs.com/zsyacm666666/p/5380053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!