好玩 洛谷 P1226 取余运算||快速幂

题目描述

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

输入输出格式

输入格式:

 

 

 

三个整数b,p,k.

 

输出格式:

 

 

 

输出“b^p mod k=s”

s为运算结果

 

输入输出样例

输入样例#1: 复制

2 10 9

输出样例#1: 复制

2^10 mod 9=7

 

 

 

 

 

快速幂算法——可迅速求出a^b。其主要理论依据如下:



        1,当b为偶数时,a^b可以转为a^2的b/2次方。


        2,当b为奇数时,a^b可以转为a^2的b/2次方,再乘以a。


       而a^2的b/2次方,以可以使用上述方式转为a^4的b/4次方再乘以某个数。代码如下

#include
using namespace std;
int main()
{
    long long int a,b,k,ans;
    cin>>a>>b>>k;
    long long int a1,b1;
    a1=a;b1=b;
    long long int res=1;
    while(b>0)
    {
        if(b%2) res=(res*a)%k;
        a=(a*a)%k;
        b/=2;
    }


   cout<
ll quick_qow(ll a,ll b,ll k)
{
    long long  res=1;
    while(b>0)
    {
        if(b%2) res=(res*a)%k;
        a=(a*a)%k;
        b/=2;
    }
    return res;
}

 

 

你可能感兴趣的:(好玩 洛谷 P1226 取余运算||快速幂)