码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 快速幂:acwing 875. 快速幂


    给定 n� 组 ai,bi,pi��,��,��,对于每组数据,求出 abiimodpi����mod�� 的值。

    输入格式

    第一行包含整数 n�。

    接下来 n� 行,每行包含三个整数 ai,bi,pi��,��,��。

    输出格式

    对于每组数据,输出一个结果,表示 abiimodpi����mod�� 的值。

    每个结果占一行。

    数据范围

    1≤n≤1000001≤�≤100000,
    1≤ai,bi,pi≤2×1091≤��,��,��≤2×109

    输入样例:
    1. 2
    2. 3 2 5
    3. 4 3 9
    输出样例:
    1. 4
    2. 1
    难度:简单
    时/空限制:1.5s / 64MB
    总通过数:49440
    总尝试数:78073
    来源:模板题
    算法标签
    1. #include
    2. using namespace std;
    3. typedef long long LL;
    4. LL quickmi(LL base,LL mi,LL p)
    5. {
    6. LL res=1;
    7. while(mi)
    8. {
    9. if(mi&1) res=res*base%p;
    10. mi>>=1;
    11. base=base*base%p;
    12. }
    13. return res;
    14. }
    15. int main()
    16. {
    17. int n;
    18. scanf("%d",&n);
    19. while(n--)
    20. {
    21. LL a,b,p;
    22. scanf("%lld%lld%lld",&a,&b,&p);
    23. LL ans=quickmi(a,b,p);
    24. printf("%lld\n",ans);
    25. }
    26. return 0;
    27. }

    快速幂的思路如下:首先需要注意一件事情,每一次中间运算都要取模,主要是为了防止发生溢出错误。快速幂的运算步骤是,先判断指数是否是奇数,假设指数是奇数,我们把答案乘以当前的底数,答案初始值为1,这一步操作结束之后,我们把指数除以2,把底数平方,比如说最开始是4^5,我们先把答案更新为4,然后把指数5除以2变成2(向下取整),把底数4平方变成16,操作结束之后指数不是奇数,不需要更新答案,指数再次变为原来的一半,2变成1,底数平方,变成16^2,操作结束之后,指数1是奇数,把答案更新,乘以当前的底数16^2,变成4*16^2,指数除以2变成0,结束循环。返回答案,也就是快速幂的结果。

    主要利用的是指数可以拆成若干乘式的乘积,我们每一次把指数除以2,只需要把底数平方即可。注意考虑指数是奇数的情况,程序整除会向下取整。

  • 相关阅读:
    前端面试题整理(2.0)
    通用Mapper获取数据表中id为0解决方法。千万别瞎改int为integer了
    docker-compose简单实例
    【vue2+onlyoffice】基础预览demo运行+问题解决
    volatile关键字的使用
    Vue3中diff算法的优化和乱序比对的实现-详细步骤(包看包会)
    Android毕业设计,基于Android 语音朗读书籍管理系统
    任意版本JLink驱动官方下载指引
    跨境电商自养号测评干货分享:从环境搭建到安全养号
    [附源码]java毕业设计电影影评网
  • 原文地址:https://blog.csdn.net/L3102250566/article/details/134470165
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号