码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂

时间:2018-03-26 16:05:37      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:space   next   close   imp   turn   div   gpo   bottom   blog   

一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 \mathcal{O}(\log (n))O(log(n)) 的时间内算出结果呢?

代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y \mod pxymodp 的结果。

import java.util.*;

public class Main {
    public static int pw(int x, int y, int p) {
        if (y == 0) {
            return 1;
        }
        int res = pw(x, y / 2, p) * pw(x, y / 2, p) % p;
        if ((y & 1) != 0) {  //若y为奇数
            res = res * x % p;
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int x = cin.nextInt();
        int y = cin.nextInt();
        int p = cin.nextInt();
        System.out.println(pw(x, y, p));
    }
}

 

快速幂

标签:space   next   close   imp   turn   div   gpo   bottom   blog   

原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8650517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!