最基本的快速幂
来源:互联网 发布:淘宝会员数量 编辑:程序博客网 时间:2024/06/05 16:40
同样是个老问题,为什么要快速幂?
显然一直for循环n次太二了啊,越到后面越蠢,轻轻松松大数据让你boom。。。。
什么是快速幂?
快速幂的原理是什么?
.......
这些问题我都不直接回答你(傲娇)
先把板子贴上来(又是我自己脑补的。。。。)
#include<cstdio>using namespace std;int a, n; // a^nint main(){scanf("%d%d", &a, &n);int temp = a;int ans = 1;while(n != 0){if(n & 1 == 1){ans = ans * temp;}temp = temp * temp;n = n >> 1;}printf("%d", ans); }
好,现在来瞎解释一波。。。
我们将n分成数个类似于1 2 4 8 16......的数的和
然后在进行幂
为什么要这样啊?
因为我们的目的是简化n啊
这同样也是temp这个东西很有意思的地方
因为他的平方完全吻合我们的类似于2进制的转化方式
而n & 1这个东西就用来判断这个temp到底有没有需要乘入ans了
联系一下这些零碎的idea,就可以搞了这个快速幂了
(注意位运算!!!位运算!!!位运算!!!)
阅读全文
0 0
- 最基本的快速幂
- 快速学习最基本的GIT命令
- hdu 1575Tr A(最基本的矩阵快速幂)
- Hibernate快速入门--安装过程及最基本的功能
- 最基本的servlet
- 最基本的排序
- 最基本的二分。
- 最基本的商业模式
- 最基本的委托
- Android快速开发之——最常用的基本列表框架搭建
- 最基本最常用的DOS命令
- 最基本最常用的一些表达式
- matlab快速入门,最常用基本函数大全。
- Joekoe 4.0 CMS 免费版本最基本的修改方法和地方汇总(快速修改成自己的站)
- 最基本的系统进程
- 最基本的nmake 语法
- 最基本的Application程序
- 最基本的java Applt
- 用汇编的眼光看C++(之拷贝、赋值函数)
- linux学习之查看linux系统
- 51nod1596-二进制&输入挂-搬货物
- 如何通过 USB 设备来安装 CentOS
- Transaction
- 最基本的快速幂
- 数据库笔试题
- gets() fgets()
- Android编程权威指南笔记2:解决R文件爆红问题和SDK概念
- centos7联网
- Keras
- C位域
- neural network 评判标准分析
- Java 垃圾回收机制