【数论入门】快速幂

没错这个blog存在的目的就是摸鱼(诶干嘛摸我自己???)

去年这个时候学的算法也po上来吧 cuz我全忘光了

数学原理是这样的:

比如a的b次幂

我们可以将b化成几个2的几次幂相加的形式,这样时间复杂度就降到log级了。

说道2的几次幂,是不是想到了二进制?没错,具体代码操作就是二进制的方法。

int ksm(int a, int b, int c, int d)
{
	c = a, d = 1;
	while(b)
	{
		if(b % 2) d*=c;
		c*=c;
		b/=2;
	}
	return d;
}

c是每次a的2的第几次幂的那个数,d是结果,负责把余数为1时c的那个数乘起来。

不会发数学符号嘤嘤嘤 写的太难看了还好这个简单

你可能感兴趣的:(数论)