1. 程式人生 > >洛谷 P1226 【模板】快速冪||取余運算

洛谷 P1226 【模板】快速冪||取余運算

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 long
b,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 【模板】快速冪||取余運算