您的位置:首页 > 其它

【模板】快速幂

2017-05-21 21:36 176 查看
啊 写这个模板是源于一个悲伤的考试…

基本介绍

模板题目

代码实现

基本介绍

快速幂就是快速计算一个数的多少次幂 意思很好理解

思路就是 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


取模的话..貌似不是除法就不会错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: