求幂&&快速幂&&位运算
1.普通的求幂方法:
时间复杂度为O(n),对于比较大的数在1s限时内可能会TLE
int pow(int base,int p){
int ans=1;
for(int i=1;i<=p;i++)
ans*=base;
return ans;
}
2.快速幂:
时间复杂度为logn
(1)结合位运算
原理:指数p可转化为2进制形式
则basep=basei(1)*2^0+i(2)*2^1+i(3)*2^2+……
=basei(1)*2^0*basei(2)*2^1*basei(3)*2^2*……
当i(n)=0时相当于乘了1,也就相当于什么也没乘,而每次待乘的数都是base2^k,乘不乘由系数i(k+1)决定,但不管乘不乘,下一次待乘的数都是base2^(k+1)即base2*2^k也就是(base2^k)2。
代码实现:
long long fastpow(long long base,long long p){
long long ans=1;
while(p!=0){
if(p&1!=0)//如果这一位(二进制最后一位)为1,则乘上待乘的数(或P%2==1)
ans*=base;
base*=base;
p>>=1;(或者p/=2)
}
return ans;
}
(2)结合模运算
我们知道basep%d=(base%d)*(base%d)*(base%d)*……%d
=(base%d)p%d
上代码:
long long fastpowmod(long long base,long long p,long long d){
long long ans=1;
base%=d;
while(p!=0){
if(p&1!=0)
ans=ans*base%d;
base=base*base%d;
p>>=1;
}
ans%=d;//0次方特判
return ans;
}
求幂&&快速幂&&位运算的更多相关文章
- HDU 4549 矩阵快速幂+快速幂+欧拉函数
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- 二分求幂/快速幂取模运算——root(N,k)
二分求幂 int getMi(int a,int b) { ; ) { //当二进制位k位为1时,需要累乘a的2^k次方,然后用ans保存 == ) { ans *= a; } a *= a; b / ...
- 欧几里得算法(及扩展)&&快速幂(二分+位运算)
最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a ...
- nyoj 102 次方求摸 快速幂
点击打开链接 次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测 ...
- hdu4549 M斐波那契数列 矩阵快速幂+快速幂
M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的 ...
- 求1+2+……+n(位运算)
求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 我发现网上的做法都很神,各种理由编译的巧妙办法,就能间接 ...
- HDU 5607 graph 矩阵快速幂 + 快速幂
这道题得到了学长的助攻,其实就是一个马尔科夫链,算出一步转移矩阵进行矩阵快速幂就行了,无奈手残 这是我第一回写矩阵快速幂,写的各种毛病,等到调完了已经8点44了,交了一发,返回PE,(发现是少了换行) ...
- 【BZOJ 1409】 Password 数论(扩展欧拉+矩阵快速幂+快速幂)
读了一下题就会很愉快的发现,这个数列是关于p的幂次的斐波那契数列,很愉快,然后就很愉快的发现可以矩阵快速幂一波,然后再一看数据范围就......然后由于上帝与集合对我的正确启示,我就发现这个东西可以用 ...
- hdoj5667 BestCoder Round #80 【费马小定理(膜拜)+矩阵快速幂+快速幂】
#include<cstdio> #include<string> #include<iostream> #include<vector> #inclu ...
随机推荐
- Unity3d开发中遇到的问题记录
安装Unity unity官方提供免费的community版本,功能健全,下载时还有Visual Studio,非常方便. 官方文档 Unity的官方文档非常权威!详尽!可靠!很多关于函数细节的疑惑都 ...
- 调试lcd时候给linux单板移植tslib
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述 tslib背景: 在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触 ...
- 洛谷P4719 【模板】"动态 DP"&动态树分治
[模板]"动态 DP"&动态树分治 第一道动态\(DP\)的题,只会用树剖来做,全局平衡二叉树什么的就以后再学吧 所谓动态\(DP\),就是在原本的\(DP\)求解的问题上 ...
- 国产网络损伤仪 SandStorm -- 只需要拖拽就能删除链路规则
国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...
- codeforces 758D
D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Ubuntu第一次使用注意点
第一次装完Ubuntu登录,打开命令行,登录的不是root权限,切换root不成功: 这个问题产生的原因是由于Ubuntu系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在 ...
- POJ 2288 Islands and Bridges(状压DP)题解
题意:n个点,m有向边,w[i]表示i的价值,求价值最大的哈密顿图(只经过所有点一次).价值为:所有点的w之和,加上,每条边的价值 = w[i] * w[j],加上,如果连续的三个点相互连接的价值 = ...
- iPhone 如何查看 Wi-Fi 密码
iPhone 如何查看 Wi-Fi 密码 shit, 需要安装第三方软件 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 原创文 ...
- auto responsive rem
auto responsive rem 移动端适配 ;(function(win, lib) { var doc = win.document; var docEl = doc.documentEle ...
- Apache 低版本不支持 WebSocket
Apache 低版本不支持 WebSocket Apache HTTP Server Version 2.4 Apache Module mod_proxy_wstunnel https://http ...