【模板】快速幂

来源:互联网 发布:python数据挖掘实战pdf 编辑:程序博客网 时间:2024/06/07 07:38

啊 写这个模板是源于一个悲伤的考试…

  1. 基本介绍
  2. 模板题目
  3. 代码实现

基本介绍

快速幂就是快速计算一个数的多少次幂 意思很好理解
思路就是 n^k拆成 n^k/2*n^k/2
说一下优化:当我们知道了n^k/2的时候 就不用再去递归求另一个n^k/2 直接存一下就好

核心代码

int quick(int num){    if(num==0){        return 1;    }    int tmp=quick(num/2);    tmp=(tmp*tmp);    if(num%2==1){        tmp=(tmp*b);    }    return tmp;}

模板题目

题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

输入输出格式
输入格式:
三个整数b,p,k.

输出格式:
输出s
s为运算结果

输入输出样例
输入样例:
2 10 9
输出样例:
7

代码实现

#include<iostream>using namespace std;int b,p,k;int quick(int num){    if(num==0){        return 1;    }    int tmp=quick(num/2)%k;    tmp=(tmp*tmp)%k;    if(num%2==1){        tmp=(tmp*b)%k;    }    return tmp;}inline void output(){    cout<<quick(p); }inline void input(){    cin>>b>>p>>k;    b%=k;}int main(){    input();    output();}//COYG

取模的话..貌似不是除法就不会错