`
xitongyunwei
  • 浏览: 929148 次
文章分类
社区版块
存档分类
最新评论

快速幂模运算

 
阅读更多

经常碰到要求(a^b )%c的题目,这个时候a,b,c一般都在int范围内,但是a^b可能就超出int表示的范围了。

这个时候要快速求解(a^b )%c可以采用快速幂模运算,基本原理如下:

(a*b)modc=(amodc*bmodc)modc

(a*b)modc=(amodc*b)modc

(a*b)modc=(a*bmodc)modc


所以可以用递归来实现快速幂模运算,代码如下:

#include <iostream>
#include <iomanip>
#include <cmath>
#define PI 3.1415927
using namespace std;

//快速幂模运算 (a^n)%m
int pow_mod(int a, int n, int m) {
	if(n==0) return 1;
	int x = pow_mod(a, n/2, m);
	long long ans = (long long)x*x%m;
	if(n%2==1) ans = ans*a%m;
	return (int)ans;
}

int main()
{
	int n, m;
	while(cin>>n>>m) {
		if(n==0&&m==0) break;
		cout << pow_mod(n, m, 1000) << endl;
	}
	return 0;
}

上面的代码来源于HDUOJ2035
分享到:
评论

相关推荐

    C语言快速幂取模算法小结

    首先,所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。我们...

    一文说尽32bit素数检测(幂模运算,米勒拉宾算法,素数检测)

    快速幂模运算,米勒拉宾合数测试,快速素数检测

    快速幂模板讲解和快速幂代码

    模仿这样的过程,我们得到一个在O(log n)时间内计算出幂的算法,也就是快速幂。 计算a的n次方,如果n是偶数(不为0),那么就先计算a的n/2次方,然后平方;如果n是奇数,那么就先计算a的n-1次方,再乘上a;递归出口...

    大数模幂运算的快速算法

    在大部分公钥密码体制中,大数模幂运算一直是最重要的运算之一,它的实现速度 ...本文总结了一些经典的大数模幂运算算法,并对这些算法的有效使用 发表了一些看法,最后对其中的一些算法提出了改进。

    快速幂入门文献-用于旋翼飞行器的控制

    快速幂算法在旋翼飞行器控制中的应用并非直接关联,快速幂作为一种高效的数学算法,主要用于计算大整数的幂次,尤其是在计算机科学和密码学中有广泛应用。不过,考虑到控制理论中的数学建模和优化计算也可能用到类似...

    快速幂取模,大数幂次求模,a^p%m

    本函数输入a,p,m,结果输出为a的p次方对m求模的结果。

    [2018 ACM-ICPC 焦作赛区网络赛] G - Give Candies(找规律+快速幂)

    题意:有一位老师给N个学生分N个糖果,老师从第一个学生开始发糖果,老师所经过的学生至少要被分到一个糖果,求...性,具体步骤就是:先把N转化成模mod-1下的的数,然后用这个数计算快速幂,得到的结果是和原数相同的。

    RSA算法的纯Python实现(源码)

    RSA算法的纯Python实现,...RSA算法原理基于两个大质数的乘积很难因式分解,几种算法的优劣主要体现在质数判断、快速乘模运算、快速幂模运算等。如需实际应用建议使用大能们的实现:https://pypi.python.org/pypi/rsa/

    C++使用string的大数快速模幂运算(6)

    主要为大家详细介绍了C++使用string的大数快速模幂运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Rabin密码保密通信软件(中南大学本科生毕业论文)

    简单介绍了信息安全技术现状及研究意义,讨论了公钥密码系统和Rabin密码系统及其涉及到的算法,包括大整数的实现、蒙格马利快速幂模运算、Miller-Rabin素性检测法、扩展的欧几里德算法。着重讨论了Rabin密码系统的...

    快速幂_取模 python实现

    函数原型 power_n__module_p(x,n,p): x: 幂底 n: 指数 p: 模数 调用示例: power_n__module_p(3,97,353) 输出: 40

    一种大数模幂的快速实现方法

    的对传统BR算法的改进方法,能明显提高大数模幂乘运算的效率,从而大大减短加密解密的时间,提高加密解密的效率。

    算法文档无代码置换群快速幂运算研究与探讨

    算法文档无代码置换群快速幂运算 研究与探讨提取方式是百度网盘分享地址

    论文研究-秦九韶算法思想在RSA密码算法中的应用研究.pdf

    介绍了用于快速计算高次多项式值的“秦九韶算法”,并用类似...RSA算法中明文分组和密文分组都较大,方幂模运算消耗大量的运算时间。因此,简化方幂模计算减少计算次数对设计RSA快速算法和选择密钥具有重要的指导意义。

    大数模幂乘算法的快速实现

    该算法用于实现RSA算法,新算法的效率有明显的提高

    密码学 模n的大数幂乘的快速算法

    计算x的r方 mod n的快速算法 (1)a,b,c (2)如果b=0,则输出结果c,结束。 (3) 如果b mod 2 !=0,则转到第(5)步。 (4)b,a(a*a)mod n,转第(3)步。 (5)b,c(c*a)mod n,转第(2)步。

    论文研究-基于粒子群算法的判断矩阵一致性修正.pdf

    在RSA算法中,最主要、使用最频繁同时也是最耗时的是方幂模运算。自从RSA算法提出后,方幂模快速算法一直是研究重点之一,方幂模算法的改进和速度的提高直接影响RSA算法的整体性能和广泛应用。深入分析了方幂模计算...

    C++快速幂与大数取模算法示例

    一、快速幂 其实就是求(a^b)% p ,(其中a,b,p都比较大在int范围内)这类问题。 首先要知道取余的公式: (a*b)%p=(a%p*b%p)%p 。 那么幂不就是乘机的累积吗,由此给出代码: int fast(int a,int b,int p) { ...

Global site tag (gtag.js) - Google Analytics