求解M的N次方的最后三位数

来源:互联网 发布:淘宝无线网址怎么转换 编辑:程序博客网 时间:2024/05/29 16:19
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);}}

0 0
原创粉丝点击