BD___A的B次方的后三位数

时间:2022-05-30 15:02:02

涉及的范围真的好广。。。


A^B的最后三位数表示的整数。1<=A,B<=10000

一脸懵逼啊。。。


每次相乘的时候,只要取后三位就好的啦,我擦,怎么好笨啊。

package temp;

import java.util.Scanner;

public class Baidu1 {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();


int ret, tmp;
ret = tmp = 1;
for (int i = 0; i < B; i++) {
ret = (A * ret) %1000;
}
System.out.print(ret);
}

}

使用A^(2*(B/2)),可以进一步的降低时间复杂度。

同时,也可以利用m*n%1000=((m%1000)*(n%1000))%1000


package temp;

import java.util.Scanner;

public class Baidu1 {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();

int ret = helper(A, B);

System.out.print(ret);
}
public static int helper(int a, int b) {
if (b == 1) return a%1000;
int mid = b/2;
int t = helper(a, mid);
if (b%2 == 1) {//奇数
return ((a%1000)*t%1000)*t%1000;
}
return t*t%1000;
}

}