bzoj1008越獄 組合數學 快速冪

2021-08-20 15:18:23 字數 911 閱讀 3192

problem 1008. – [hnoi2008]越獄

time limit: 1 sec  

memory limit: 162 mb

submit: 11735  

solved: 5087 [

submit][

status][

discuss]

監獄有連續編號為1…n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果

相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄

輸入兩個整數m,n.1<=m<=10^8,1<=n<=10^12

可能越獄的狀態數,模100003取餘

2 36

6種狀態為(000)(001)(011)(100)(110)(111)

[ submit][

status][

discuss]

home

back

一句話題解:先考慮的所有的狀態m^n,然後考慮不越獄的狀態m*(m-1)^(n-1),兩者相減

為什麼寫這種簡單題的題解,因為沒有1a,又死在%上了

an = (power(m,n,mod)-m%mod*power(m-1,n-1,mod)%mod+mod)%mod;

第一遍沒有加mod,m^n%mod以後小於後者

#include 

using namespace std;

const int

mod = 100003;

int power(long

long a,long

long b,int p)

return ans;

}long

long n,m;

int main()

bzoj1008 越獄 組合數學

監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄 輸入兩個整數m,n.1 m 10 8,1 n 10 12 可能越獄的狀態數,模100003取餘 2 366種狀態為 000 001 ...

BZOJ 1008 越獄(組合數學)

思路 首先全部情況有m n種,不滿足題意的情況有m m 1 n 1 種情況,然後快速冪就好啦 include includeusing namespace std define ll long long define mod 100003 ll powmod ll a,ll b return ans...

BZOJ 1008 越獄(組合數學)

description 監獄有連續編號為 1.n 1.n的 n n 個房間,每個房間關押乙個犯人,有 m role presentation style position relative m m種宗教,每個犯人可能信仰其中一種。如果 相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生...