import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
public final class Demo {
/*
功能: 求解M的N次方的最后三位数(M,N均大于10)
输入参数:
int M:M > 10
int N:N > 10
返回值:
M的N次方的最后三位数
*/
public static HashMap<Integer,Integer> map;
public static ArrayList<Integer> list;
static {
list=new ArrayList<Integer>();
map=new HashMap<Integer,Integer>();
for(int i=0;i<1000;i++){
map.put(i, -1);
}
}
public static int getLast3DigitsOfMN(int M, int N){
/*在这里实现功能*/
long s =System.currentTimeMillis();
M=M%1000;
int res=1;
for(int i=0;i<N;i++){
res=(res*M)%1000;
int index=map.get(res);
if(index==-1){
list.add(res);
map.put(res, i);
}else{
int li=list.indexOf(res);
int temp=(N-li-1)%(i-li);
return list.get(temp+li);
}
}
return res;
}
public static void main(String[] argv){
long s =System.currentTimeMillis();
BigInteger b=new BigInteger("234");
System.out.println(b.pow(234));
long e =System.currentTimeMillis();
System.out.println(e-s);
}
}