ACM必备算法:快速幂(Java)
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM必备算法:快速幂(Java)相关的知识,希望对你有一定的参考价值。
前提
指数运算,Java提供的有函数,而且初学Java 循环时 必须了解,幂运算,但是当 底数 指数很大时,我们就需要快速幂,提高计算效率,ACM竞赛必备的基本算法,因为它对JAVA 不是很友好,因此我们尽量需要提高代码效率。
引入
3 ^ 5 = 3 * 3 * 3 * 3 * 3 我们可以,让指数变小,底数增大。 3 ^ 5 = 9 * 9 * 3 = 81 * 3
发现指数从 5 – 2 – 1,逐步缩小。
代码
public static long quickPow(long a, long b) {
long res = 1;
while (b != 0) {
// 判断指数是否为奇数
if ((b & 1) == 1) {
// 奇数的话,结果*底数
res *= a;
}
// 将结果 * 底数的平方
res *= (a * a);
// 指数缩小一半
b >>= 1;
}
return res;
}
努力奋斗
加油!
以上是关于ACM必备算法:快速幂(Java)的主要内容,如果未能解决你的问题,请参考以下文章