快速冪(求模)
阿新 • • 發佈:2018-11-19
補上快速冪的演算法,與快速乘法有區別,乘法是乘,加法是加,看懂了就感覺簡單,也是通過二進位制計算的,其中就是對底數處理一下,防止底數過大爆了,還有就是沒次步驟都進行求餘,也是防止資料過大!
#include <iostream> using namespace std; typedef long long int ll; ll m; ll quick(ll a ,ll b) { ll abs=a%m; ll ans=1; while(b) { if(b&1) ans=(ans*abs)%m; abs=(abs*abs)%m; b>>=1; } return ans; } int main() { int t; cin>>t; while(t--) { int n; cin>>m>>n; ll sum=0; while(n--) { ll a,b; cin>>a>>b; sum=(sum+quick(a,b))%m; } cout<<sum%m<<endl; } }