LeetCode 1382.將二叉搜尋樹變平衡
阿新 • • 發佈:2020-11-16
快速冪
閒扯
本蒟蒻數學不好(• ̀ω•́ )✧,想寫一篇快速冪的題解讓自己對其的瞭解更加深入。
演算法
題面
題目描述
給你三個整數\(b, p, k\)求 \(b ^ p \mod k\)
輸入格式
輸入只有一行三個整數,分別代表\(b, p, k\)
輸出格式
輸出一行一個字串\(b ^ p \mod k = s\) ,其中\(b, p, k\)分別為題目給定的值,\(s\)為運算結果。
演算法
我們在進行冪運算的時候將\(a\)自乘一次得到\(a ^ 2\),再把\(a ^ 2\)自乘一次變為\(a ^ 4\),接下來\(a ^ 8\)……,自乘\(n\)次後就變為了\(a ^ {2n}\)
那麼程式碼應該如何實現呢?首先我們定義一個初始值\(base = a\)和\(ans = 1\)
程式碼實現
#include<bits/stdc++.h>
using namespace std;
long long b,q,k;
long long quickpower(long long a,long long b){
long long ans=1,base=a;
while(b > 0){
if(b & 1) ans=ans*base%k;
base=base*base%k;
b >>=1;
}
return ans;
}
int main(){
cin>>b>>q>>k;
int ans=quickpower(b,q);
printf("%lld^%lld mod %lld=%lld",b,q,k,ans%k);
return 0;
}
完結撒花ヾ(✿゚▽゚)ノ