BZOJ 1008 越獄(組合數學)

2021-08-17 14:44:25 字數 1271 閱讀 6037

description

監獄有連續編號為

1...

n 1...n的

n n

個房間,每個房間關押乙個犯人,有

m' role="presentation" style="position: relative;">m

m種宗教,每個犯人可能信仰其中一種。如果

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

input

輸入兩個整數m,

n.1≤m

≤108,

1≤n≤

1012

m ,n

.1≤m≤

108,1

≤n≤10

12output

可能越獄的狀態數,模

100003

100003

取餘sample input

2 3sample output

solution

總情況mn

m

n種,不合法情況即為相鄰房間信仰均不同,第乙個房間

m m

種可能,之後每個房間的犯人由於都不能和前乙個房間犯人的信仰相同,故只有m−

1' role="presentation" style="position: relative;">m−1

m−1種可能,故不合法方案數即為m⋅

(m−1

)n−1

m ⋅(

m−1)

n−

1,兩者做差即為答案

code

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const ll mod=100003;

ll pow(ll a,ll b)

return ans;

} 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...

bzoj1008 越獄 組合數學

這個題還是很簡單的,一共有m n種情況,只要減去不可能發生越獄的情況,就是可能發生越獄的情況。不可能發生越獄的情況 第乙個犯人有m種宗教選擇,第二個犯人有m 1種宗教選擇 因為要與相鄰的犯人不一樣 第三個犯人也有m 1種宗教選擇,一直到第n個犯人也有m 1種宗教選擇,所以一共有m m 1 n 1 所...