zoukankan      html  css  js  c++  java
  • CODEVS 3500

    题目描述

             输入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
    ",fast_cover(a,b,c));
        }
        return 0;
    }
  • 相关阅读:
    String、StringBuilder、StringBuffer区别
    深拷贝和浅拷贝
    二叉查找树(一)
    二叉树的遍历
    二叉树
    递归
    队列

    数据结构基础
    视图
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/5380053.html
Copyright © 2011-2022 走看看