欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > LeetCode 1922题解(快速幂模板题)

LeetCode 1922题解(快速幂模板题)

2025/4/19 16:54:21 来源:https://blog.csdn.net/m0_73938805/article/details/147200012  浏览:    关键词:LeetCode 1922题解(快速幂模板题)

这就是快速幂的计算方式,将一个幂次方计算公式拆分后计算

这一题就是典型的快速幂的模板题,前几天因为写题遇到了知识盲区所以弄了很久,昨天的困难题也没做出来,只有自己的计算思路,实现还跑不出来,气死我了,今天也刚刚学会了快速幂

对于本题我们可以对答案进行拆分,分为两部分,一个计算偶数下标的幂次方,一个计算奇数下标的幂次方
偶数有0,2,4,6,8;一共5个
质数有2,3,5,7;一共4个

所以偶数下标计算5的幂次方
奇数计算4的幂次方

位数由n决定

而位数n对应的偶数下标个数为(n+1)/2奇数小标个数为n/2

而遍历的幂次方根据二进制的位运算进行遍历拆分幂次方计算(n&1)>0,只有1和0两种情况

class Solution {private static final int MOD = 10_0000_0007;public int countGoodNumbers(long n) {return (int)(pow(5,(n+1) / 2)*pow(4,n / 2) % MOD);}public long pow(long x,long n){long res = 1;while(n>0){if((n&1)>0){res = res*x%MOD;}x = x*x%MOD;n = n>>1;}return res;}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词