[bzoj1008] [HNOI2008]越獄
阿新 • • 發佈:2019-02-03
digi write -i 就是 取余 相同 its ++ tchar
Description
監獄有連續編號為1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄
Input
輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12
Output
可能越獄的狀態數,模100003取余
Sample Input
2 3
Sample Output
6
Solution
總方案數減去不可越獄的方案數即可。
答案就是:
\[
ans=m^n-m\cdot (m-1)^{n-1}
\]
#include<bits/stdc++.h> using namespace std; #define int long long void read(int &x) { x=0;int f=1;char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f; for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f; } #define write(x) printf("%d\n",x) const int maxn = 2e5+10; const int mod = 100003; int n,m; int qpow(int a,int x) { int res=1;a%=mod; for(;x;x>>=1,a=a*a%mod) if(x&1) res=res*a%mod; return res; } signed main() { read(m),read(n); write((qpow(m,n)-m%mod*qpow(m-1,n-1)%mod+mod)%mod); return 0; }
[bzoj1008] [HNOI2008]越獄