题目描述
快速幂
样例
import java.util.*;
public class Main{
public static int qmi(int a,int k,int q){
int res = 1;//记录答案
//执行到k为0结束
while (k != 0){
//判断一下k的二进制最后一位是1还是0,如果是1执行下面的语句,说明他有这个a的2的几次方
if((k & 1) == 1) res = (int)((long)res * a % q);
k >>= 1; //每一次将k的二进制向右移动一位,等待下次判断
a = (int)((long)a * a % q); //我们先预处理出来a的2的0至log(k)次方,然后使用这些预处理出来的数进行相乘
}
return res;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
int x = sc.nextInt();
System.out.println((x + (long)qmi(10, k, n) * m) % n);
}
}