快速幂 快速乘法
2016-04-16 20:16
459 查看
#include <iostream> #include <cstdio> #include #include <cmath> #include <cstring> #include<map> using namespace std; long long q_mul( long long a, long long b, long long mod ) //快速计算 (a*b) % mod { long long ans = 0; // 初始化 while(b) //根据b的每一位看加不加当前a { if(b & 1) //如果当前位为1 { b--; ans =(ans+ a)%mod; //ans+=a } b /= 2; //b向前移位 a = (a + a) % mod; //更新a } return ans; } long long q_pow( long long a, long long b, long long mod ) //快速计算 (a^b) % mod { long long ans = 1; // 初始化 while(b)//根据b的每一位看乘不乘当前a { if(b & 1) //如果当前位为1 { ans = q_mul( ans, a, mod ); //ans*=a } b /= 2; //b向前移位 a = q_mul( a, a, mod ); //更新a } return ans; } int main( ) { long long a, b, n; while(cin >> a >> b >> n) { cout << "a*b%n = " << q_mul( a, b, n ) << endl; cout << "a^b%n = " << q_pow( a, b, n ) << endl; } return 0; }
相关文章推荐
- oil deposits——广搜
- acm 算法竞赛 时间
- 配置nodejs环境
- poj 1236
- javascript getElementById 使用方法及用法
- SQL Server 存储过程
- Delegate in UnrealEngine ——虚幻四中的委托
- 20145238-荆玉茗 《Java程序设计》第2次实验
- 匿名方法
- 第7周学习进度
- 全排列算法
- js查看一个函数的执行所用时间
- 安卓开发小知识 - 3
- 操作系统基础及多线程/进程同步
- Android AudioTrack
- 异常org.hibernate.HibernateException: The database returned no natively generated identity解决方案
- 思科4500系列与华为9300系列交换机介绍与选配
- Tesseract安装使用
- Http协议中关于Content-Length和Chunk
- .NET设计模式(1):1.1 单例模式(Singleton Pattern)