BZOJ 1008 越獄題解
阿新 • • 發佈:2018-03-31
bzoj mat names ans 由於 cin text namespace def
其實這題很水,顯然n個房間有m種宗教,總共有n^m種情況,
我們再考慮不合法的情況,顯然第一個房間有m種情況,而後一種只有m-1種情況(因為不能相同)
所以不合法的情況有(m-1)^(n-1)*m種情況,相減即是答案。
註意一下實現的細節,由於n和m可能很大,模運算時要註意一下(血的教訓)
# include<iostream> # include<cstdio> # include<cmath> using namespace std; const long long mod = 100003; typedef long long LL; LL qpow(LL a,LL b) {if(b==0) return 1; LL ans=1,base=a; while(b) { if(b&1) ans=(ans%mod)*(base%mod)%mod; base=(base%mod*base%mod)%mod; b>>=1; } return ans%mod; } int main() { LL n,m,ans; cin>>m>>n; ans=qpow(m,n); ans=(ans-((qpow(m-1,n-1)%mod)*(m%mod)%mod)+mod)%mod; cout<<ans; return 0; }
BZOJ 1008 越獄題解