题目以及要求:
代码:
1.递归算法
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class 快速幂模板题 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
List<Long> list=new ArrayList<Long>();
for (int i = 0; i < num; i++) {
long a=sc.nextLong();
long b=sc.nextLong();
long p=sc.nextLong();
long result=power(a,b,p);
list.add(result);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public static long power(long x ,long n,long p){
if (n==0) {
return 1;
}
long r=power(x, n/2, p);
r*=r;
r=r%p;
if (n%2!=0) {
r=r*x%p;
}
return r;
}
}
2.非递归算法
public static long power(long x ,long n,long p){
long t= x;
long d= (long) 1;
while (n>0) {
if (t==1) {
return d;
}
if (n % 2!=0) {
d=d*t%p;
}
n=n/2;
t=(t*t)%p;
}
return d;
}