洛谷 P1226 【模板】快速冪||取余運算
阿新 • • 發佈:2019-02-23
badge region 輸入輸出 orange ace -c main c代碼 out
題目描述
輸入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
算法原理:
b^p = b^(p-1) * b^(p-1)
AC代碼:
1 #include<iostream> 2 #include<iomanip> 3 #include<cstdio> 4 using namespace std; 5 long longb,p,k; 6 long long ksm(long long p){ 7 if(b==0) return 0; 8 if(p==0) return 1; 9 long long x=ksm(p/2)%k; 10 if(p%2==0) return x*x%k; 11 else return x*x%k*b%k; 12 } 13 int main(){ 14 cin>>b>>p>>k; 15 cout<<b<<"^"<<p<<" mod "<<k<<‘=‘<<ksm(p)%k; 16 return 0; 17 }
洛谷 P1226 【模板】快速冪||取余運算