2021寒假每日一题《a^b》

a^b

题目来源:《算法竞赛进阶指南》
时间限制: 1000 m s 1000ms 1000ms 内存限制: 32 m b 32mb 32mb

题目描述

a a a b b b 次方对 p p p 取模的值。

输入格式

三个整数 a a a , b b b , p p p ,在同一行用空格隔开。

输出格式

输出一个整数,表示 a^b mod p 的值。

数据范围

0 ≤ a , b , p ≤ 1 0 9 0 ≤ a,b,p ≤ 10^9 0a,b,p109 ,
数据保证 p ≠ 0 p≠0 p=0

样例输入

3 2 7

样例输出

2

解题思路

这是一个快速幂模板题,直接套模板就可以了。

快速幂模板( a b % p a^b\%p ab%p):

public static long quickPow(int a, int b, int mod) {
    
    
    long ans = 1, clothCover = a;
    while (b > 0) {
    
    
        if ((b & 1) == 1) {
    
    
            ans = ans * clothCover % mod;
        }
        clothCover = clothCover * clothCover % mod;
        b >>= 1;
    }
    return ans % mod;
}

解题代码-Java

import java.util.Scanner;

public class Main {
    
    
    public static long quickPow(int a, int b, int mod) {
    
    
        long ans = 1, clothCover = a;
        while (b > 0) {
    
    
            if ((b & 1) == 1) {
    
    
                ans = ans * clothCover % mod;
            }
            clothCover = clothCover * clothCover % mod;
            b >>= 1;
        }
        return ans % mod;
    }

    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        System.out.println(quickPow(input.nextInt(), input.nextInt(), input.nextInt()));
        input.close();
    }
}

猜你喜欢

转载自blog.csdn.net/HRT48267868/article/details/113622721