title: 蓝桥杯16—快速幂
date: 2019-11-18 21:38:00
categories:
- 蓝桥杯
tags: - 蓝桥杯
蓝桥杯16—快速幂
-
问题描述 给定A, B, P,求(A^B) mod P。 输入格式 输入共一行。 第一行有三个数,N, M, P。 输 出格式 输出共一行,表示所求。 样例输入 2 5 3 样例输出 2 数据规模和约定 共10组数据 对100%的数据,A, B为long long范围内的非负整数,P为int内的非负整数。
-
解释:
-
解法:
import java.util.Scanner; public class day_16 { public static void main(String[] args){ Scanner in = new Scanner(System.in); long a = in.nextLong(); long b = in.nextLong(); long c = in.nextLong(); long result = 1; in.close(); while(b>0){ if(b%2==1){ //是奇数情况下,需要多乘以一个a result = (result*a)%c; } a = (a*a)%c;//不管b是奇数还是偶数都是这样,将b的数值降下来,a的数值升上去 b = b/2; } System.out.print(result); } }