快速求积、求幂、大数取模
来源:互联网 发布:淘宝上最火的女装店铺 编辑:程序博客网 时间:2024/04/29 17:07
1.快速求积,a*b=a*2*b/2
int fast_mul(int a, int b){ int m = 0; while(b){ if(b % 2) { //a*b = a+a(b-1) m += a; --b; } else { //a*b = a*2*b/2 a <<= 1; b >>= 1; } } return m;}
2.快速求幂,a^e=a^(2*e/2)
int fast_exp(int a, int e){ int exp = 1; while(e){ if(e & 0x01){ //a^e = a*a^(e-1) exp *= a; --e; }else{ //a^e = a^(2*e/2) a *= a; e >>= 1; } } return exp;}3.大整数取模,(a*b)%m = ((a%m)*(b%m))%m
int bigint_mod(int a, int n, int m){ int mod = 1; while(n){ if(n & 0x01){ //(a*b)%m = ((a%m)*b)%m = (a*(b%m))%m = ((a%m)*(b%m))%m mod = (mod*a)%m; } a = (a*a)%m; n >>= 1; } return mod;}
上面算法中的 n & 0x01 如果是1的话 ,那么就说明n最后一位是1,所以n%2!=0.还有 >>右移一位相当于除以2 <<左移一位相当于乘以2
- 快速求积、求幂、大数取模
- 前缀积与后缀积求大数取模
- 大数取余/求商
- 求乘方取模(快速幂+慢速乘法模板)
- 算法 二分求幂(快速取幂)
- 高效的求大数的幂和取余
- 求大数积
- 大数求模hdu1212
- 大数求模lightoj1214
- 递归大数求模
- 大数求幂运算
- 高精度大数求幂
- 大数取模 和 快速幂
- 大数乘法求尾数的快速算法
- 快速排序与求第k大数
- 快速排序 求第k大数
- 大数取模,快速幂取模板子
- 取模 求余
- fedora上安装NS2
- 不能干一辈子开发???
- gnuplot学习(1)
- WPF中对Excel文件的导入导出操作详解
- TCP的客户端和服务端通信
- 快速求积、求幂、大数取模
- C++图像缩放
- 使用oprofile分析性能瓶颈
- 使用ifstream和getline读取文件内容
- PyQt4实现USB设备插入到弹出的检测(Windows)
- 关于new创建对象的弱智问题
- C语言字符串查找函数
- java 参数是按值传递还是按址传递
- FFMPEG的详细资料可以在它的官方网站上找到