PKU 1995 Raising Modulo Numbers
http://poj.org/problem?id=1995
与えられた計算式の答えを出すだけ。
繰り返し二乗法を使えば危なげ無く通るきがします。
ll modpow(ll a,ll b,ll m){ if(b==0)return 1; ll ret=b%2?a:1; ll t=modpow(a,b/2,m)%m; return ret*t*t%m; } main(){ int Z; cin>>Z; while(Z--){ int m,h; cin>>m>>h; ll ans=0; rep(i,h){ ll a,b; cin>>a>>b; ans=(ans+modpow(a,b,m))%m; } cout<<ans<<endl; } }