算法学习-快速幂模板(JAVA实现)

本文最后更新于:January 19, 2022 pm

纸上得来终觉浅,绝知此事要躬行。路漫漫其修远兮,吾将上下而求索!知识是经过历史的巨人沉淀下来的,别总想着自己能够快速学会,多花点时间去看看,也许会发现些不同的东西。你能快速学会的、觉得简单的东西,对于别人来说也是一样的。人外有人,天外有天。当努力到达了一定的程度,幸运自会与你不期而遇。

目录

快速幂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static int mod=100003;

public static long quick_pow(long x,long y) {
long s=1;
while(y>0)
{
if((y&1)==1) s=(s*x)%mod;
y>>=1;
x=(x*x)%mod;
}
return s;
}

public static void main(String[] args) throws Exception {

long n = nextLong();
long m = nextLong();
// 加mod再取余mod是防止前面的相减为负数。因为原本的含义是前面的一定大于后面的,在分别取余后就可能造成前面的小于后面的,如101和99分别对100取余。
System.out.println((quick_pow(n,m)-n*quick_pow(n-1,m-1)%mod+mod)%mod);

closeAll();
}

矩阵快速幂